私はattribute_fuを使用して、特定のテーブルの行の適切なブロックをレンダリングしています。
<%= f.render_associated_form(@foo.bars, :new => 5) %>
bar
パーシャルに少し状態の概念を持たせたいと思います。(この概念はビューに固有であるため、これをモデル自体に外部化してコントローラーで計算したくありません。)簡単にするために、リスト内のBar
のインデックスであると仮定します。 bar
@foo.bars
(この場合、:collection => @ foo.barsを使用してbar_counterを有効にできることを認識しています...これは私のテストでは機能していないようですが、ドキュメントを確認しました。)
私の質問-状態を保持および編集できるように、変数をパーシャルに渡すにはどうすればよいですか?素朴に、私は次のようなことをすると思いました
<% @tmp = {:index => 1} %>
%= f.render_associated_form(@foo.bars, :new => 5, :locals => {:tmp => @tmp}) %>
#goes in the view
<%= tmp[:index] += 1 %>
動作します。 tmp
は適切に渡されますが、[]を呼び出すと、「ああ、nilでメソッドを呼び出しただけです」とスローされます。驚いたことに、私はtmp.inspect、tmp.classなどを実行してハッシュを調べることができ、これらは私が期待する結果をもたらします。しかし、tmp [:index]またはtmp [:anything_I_want]はそれを爆破させます。
tmp
配列を作成しても同様の結果が得られました。
何か案は?