我正在使用 attribute_fu 为特定表格呈现一个漂亮的行 block 。
<%= f.render_associated_form(@foo.bars, :new => 5) %>
我想让 bar
部分有一些状态的概念。 (因为这个概念是特定于 View 的,我不想将它外化到 Bar
模型本身并在 Controller 中计算它。)为了简单起见,假设它是 的索引>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
设为数组也有类似的结果。
有什么想法吗?
最佳答案
我最终以彻底的 Rails 方式解决了这个问题——修补 :attribute_fu 以满足我的需要。希望我能尽快向社区发布我的补丁。
关于ruby-on-rails - 如何跟踪多次调用以呈现 :partial 的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/264832/