2

私は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配列を作成しても同様の結果が得られました。

何か案は?

4

2 に答える 2

1

私はこれを完全に Rails のやり方で解決することになりました - 私のニーズを満たすために :attribute_fu にパッチを当てました。パッチをコミュニティにすぐにリリースできることを願っています。

于 2008-11-07T02:31:31.913 に答える
0

上記の動作は、ローカルが適切に渡されていないため、attribute_fuのバグである必要があるようです。これは間違いなくそうあるべきです。パッチを当てるためにあなたが何をしたか知りたいです。

于 2008-11-10T16:57:20.950 に答える