1

私は次のことをしています:

<%= render :partial => "folder/content", :locals => {:var1 => featured_content, :featured => true} %>

_content.html.erbパーシャル内で、最初のローカル変数にアクセスできます。var1はうまく機能します。ただし、2番目のローカル変数には問題があります。

機能変数を使用する行の直前にデバッガーを呼び出します。その変数(およびその値)に問題なくアクセスできます。実際、デバッガーでは、すべてのローカル変数を一覧表示できます...そして「featured」がその1つであることがわかります。

しかし、サーバーを実行すると、次のエラーが発生します。

undefined local variable or method `featured' for #<#<Class:0x002g9ff8617940>:0x007f9aa251eb38>

ここで何が起こっている可能性がありますか?それは私にはまったく意味がありません!

アップデート:

私が次のことをした場合:

<% if local_assigns.has_key? :featured %>
  <% 'hello world' if featured %>
<% end %>

その後、すべてが完全に正常に動作します。ただし、featuredがifステートメントの範囲内にない場合、エラーが発生します。

これは私が見る限り完全な狂気です-何が起こっているのか、そしてなぜそれがこの1つの貧弱な変数にのみ起こっているのかについての洞察が欲しいです(他の変数はあなたを完全に気にします...)。

4

2 に答える 2

0

あなたはこれを試すことができます:

<%= render "folder/content", :var1 => featured_content, :featured => true %>

詳細については、こちらをご覧ください。

Rails:ローカルをパーシャルに渡すための構文について混乱しています

于 2012-11-27T05:14:36.880 に答える
0

has_keyが現在機能する唯一のオプションのようです(私の編集を参照してください)。これ以上の反応が得られなかったので、これを閉じます。

于 2012-12-05T18:54:39.927 に答える