我使用attribute_fu为特定表格渲染一个漂亮的行块。
<%= f.render_associated_form(@foo.bars, :new => 5) %>
我希望bar
部分有一些状态的概念。 (因为这个概念特定于视图,我不想将其外部化到Bar
模型本身并在控制器中计算它。)为简单起见,假装它是bar
的索引。在@foo.bars
列表中。
(我知道如果是这种情况,我可以使用:collection =&gt; @ 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等来查看Hash,这些都有我期望的结果。但是tmp [:index]或tmp [:anything_I_want]导致它爆炸。
使tmp
数组具有类似的结果。
有什么想法吗?
答案 0 :(得分:1)
我最终以彻底的Rails方式解决了这个问题 - 修补:attribute_fu以满足我的需求。希望我能够很快将我的补丁发布到社区。 p>
答案 1 :(得分:0)
您在上面描述的行为似乎必须是attribute_fu中的错误,因为本地未正确传递,这绝对应该。我有兴趣知道你做了什么修补它。