3

ビューERBからパーシャルに2人のローカルを渡します。両方のローカルがlocal_assignsで正常に渡されます。ただし、FormBuilderは、パーシャルのローカル変数名を介してのみ使用できます。もう1つの値は、私のパーシャル内で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]」が表示されます。

三元ステートメントのコメントを解除すると、「#<#:0x4d58768>の未定義のローカル変数またはメソッド`disable_edits'」になります。

私は、最新の提案されたRails構文を理解していますが、:partial =>、:locals =>、:as=>などを使用して操作を試みましたが無駄になりました。また、これをオプションの引数にしたとは思わないので、has_keyとnilを使用したテストに関する多くの情報はありますか?私を助けていません。私の理解では、local_assignsのすべては、ハッシュキーと同じ名前のローカル変数としてパーシャルのように公開する必要があります。

今のところlocal_assigns[:disable_edits]を使用していますが、何が起こっているのかを理解し、より一般的な構文を使用できるように修正したいと思います。ありがとう!

4

1 に答える 1

0

使ってみてください

render :partial => "panel_fields", :locals => {:f => builder, :disable_edits => true }
于 2012-07-08T02:09:22.747 に答える