部分本地只能使用local_assigns访问,不能通过名称公开

时间:2012-05-10 17:44:17

标签: ruby-on-rails-3 partial-views erb renderpartial

我将两个本地人从视图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],但想了解发生了什么并纠正了一些事情,所以我可以使用更传统的语法。谢谢!

1 个答案:

答案 0 :(得分:0)

尝试使用

render :partial => "panel_fields", :locals => {:f => builder, :disable_edits => true }