繁体   English   中英

Rails 4与本地人一起呈现部分

[英]Rails 4 render partial with locals

我有一个部分_errors.html.haml来显示我的应用程序中的表单错误。 部分内部的代码:

.errors
  %ul
    - errors.full_messages.each do |message|
      %li= message

我将items / new.html.haml中的部分渲染为

= render 'shared/errors', locals: { errors: @project.errors } if @project.errors.any?

错误部分驻留在views/shared目录中。

但是当我尝试将错误部分渲染时,我收到错误。

undefined local variable or method errors' for #<#<Class:0x0055895405bbc0> :0x00558951a80fe0>

如果我将渲染线更改为

= render 'shared/errors', errors: @project.errors if @project.errors.any?

有用。 为什么在这种情况下不使用locals

只是为了补充Khanh的答案。 我已经尝试了所有的变化。 看来,如果你想使用术语locals Rails的部分呈现,你需要指定关键字partial

明确所以这会奏效

= render partial: 'shared/errors', locals: { errors: @project.errors } if @project.errors.any?

隐含或简短形式

= render 'shared/errors', errors: @project.errors if @project.errors.any?

总而言之,如果指定用于呈现partial的哈希键,则必须明确指定其所有键。 否则,您将不必指定散列键并让rails根据位置隐式地计算出来。

我猜你的问题正在为locals制造条件。

您可以尝试这样做:

- if @project.errors.any?
  = render partial: 'shared/errors', locals: { errors: @project.errors }

_errors.html.haml

.errors
  %ul
    - test_errors.full_messages.each do |message|
      %li= message

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM