2008-11-05 60 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中的一个错误,因为本地没有正确传递,它绝对应该这样做。我很想知道你做了什么来修补它。