如何通过几次调用来跟踪信息:partial

时间:2008-11-05 10:57:12

标签: ruby-on-rails ruby partials

我使用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数组具有类似的结果。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我最终以彻底的Rails方式解决了这个问题 - 修补:attribute_fu以满足我的需求。希望我能够很快将我的补丁发布到社区。

答案 1 :(得分:0)

您在上面描述的行为似乎必须是attribute_fu中的错误,因为本地未正确传递,这绝对应该。我有兴趣知道你做了什么修补它。