我将两个本地人从视图ERB传递到部分。两个本地成功都在local_assigns中成功传递。但是,我只能通过局部变量名称在部分中使用FormBuilder。另一个值在我的partial中可用作local_assigns [:disable_edits],但不能用作disable_edits。
_form.html.erb
<div>
<%= f.fields_for :panels do |builder| %>
<%= render "panel_fields", :f => builder, :disable_edits => true %>
<% end %>
</div>
_panel_fields.html.erb
<div>
<p>
<%= local_assigns[:disable_edits] %>
</p>
<p>
<%#= disable_edits ? 'disable edits true' : 'disable edits false' %>
</p>
<p>
<%= local_assigns.keys %>
</p>
local_assigns [:disable_edits]导致显示“true”。
local_assigns.keys导致显示“[:f,:disable_edits,:panel_fields]”。
取消注释三元语句会导致“未定义的局部变量或方法`disable_edits'用于#&lt;#:0x4d58768&gt;”
我遵循的理解是最新建议的Rails语法,但尝试使用:partial =&gt;,:locals =&gt;,:as =&gt;等进行操作无济于事。我也不认为我以任何方式将其作为可选参数,因此有很多关于使用has_key与nil进行测试的信息?没有帮助我。我的理解是local_assigns中的所有内容都应该作为局部变量公开,并且与哈希键同名。
我现在正在使用local_assigns [:disable_edits],但想了解发生了什么并纠正了一些事情,所以我可以使用更传统的语法。谢谢!
答案 0 :(得分:0)
尝试使用
render :partial => "panel_fields", :locals => {:f => builder, :disable_edits => true }