2008-11-05 61 views
2

我正在使用attribute_fu爲特定表格渲染一行很好的塊。如何跟蹤多次調用渲染的信息:部分

<%= f.render_associated_form(@foo.bars, :new => 5) %> 

我想有bar部分有一些狀態的概念。 (因爲這個概念是特定於視圖的,所以我不希望將其外部化到Bar模型本身並在控制器中計算它。)爲簡單起見,假設它是@foo.bars列表中bar的索引。我知道,如果是這種情況,我可以使用: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得到適當的通過,但調用[]拋出「呃哦,你只是調用一個方法爲零」。對我來說令人驚訝的是,我可以做tmp.inspect,tmp.class等來查看哈希,並且這些都有我期望的結果。但是tmp [:index]或tmp [:anything_I_want]導致它爆炸。

製作tmp一個數組有類似的結果。

任何想法?

回答

1

我最終以徹底的Rails方式解決了這個問題 - 修補:attribute_fu來滿足我的需求。希望我能夠很快將我的補丁發佈到社區。

0

上面描述的行爲似乎是屬性_fu中的一個錯誤,因爲本地沒有正確傳遞,它絕對應該這樣做。我很想知道你做了什麼來修補它。