我在Rails 3.1应用程序中有一个嵌套表单,使用Cocoon gem。
在子表单中,我有一个链接,当点击它时,应该返回子的id并将其传递给javascript函数。
<%= form_for @parent do |f| %>
parent fields...
<%= f.fields_for :child do |child| %>
<%= link "run function", 'string-to-pass' => "#{child.id}" %>
child fields...
<% end %>
<% end %>
从嵌套记录中返回列变量的正确语法是什么?
child.id
返回undefined local variable or method "child"
我可以在父控制器中定义一个@child变量,但是如何将其指向子ID而不是父ID?
我确定我在这里遗漏了一些简单的东西,但我看不出它是如何组合在一起的?
感谢任何有关相关信息的建议或指示。
谢谢!
答案 0 :(得分:1)
我建议做类似的事情:child.object.id
我没有测试过,所以请告诉我它是否有效。
编辑: 我的观点中有这样的代码:
<%= f.fields_for :children do |child| %>
<%= render "child_fields", :f => child %>
<% end %>
然后在_child_fields.html.erb
:
<%= f.object.some_attribute %>
and other view stuff
这很有效。
您可以尝试将代码调整为类似。有一点我刚才意识到,在你的领域中你需要说:
<%= f.fields_for :children
而不是:
<%= f.fields_for :child
当然假设你在这里有一对多的关系。
答案 1 :(得分:0)
如果你想调用一个javascript函数,不要真正理解为什么你在控制器中讨论@variables,但无论如何...... 我认为您正在寻找帮助 link_to_function ,其代码如下:
link_to_function('link', "myJSFunction(#{child.id});"
这是你的问题吗?