如何从Rails中的嵌套表单记录返回列值(记录ID)?
我使用Cocoon gem在Rails 3.1应用程序中嵌套了一个窗体。如何从Rails中的嵌套表单记录返回列值(记录ID)?
在子窗体中,我有一个链接,点击后,应该返回子项的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?
我确定我在这里错过了一些简单的东西,但我看不出这是如何融合在一起的?
感谢您提供任何建议或指向相关信息。
谢谢!
我建议做这样的事情: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
而这个工作。
你可以尝试调整你的代码是否类似。有一件事我才意识到,在你fields_for你需要说:
<%= f.fields_for :children
而不是:
<%= f.fields_for :child
假设,当然,前提是你有一个一对多的关系会在这里。
真的不明白你为什么要谈论的控制器@variables如果你想调用javascript函数,但无论如何... 我认为你正在寻找的助手link_to_function一些代码像:
link_to_function('link', "myJSFunction(#{child.id});"
那是你的问题?
感谢Aledalgrande,感谢您的帮助,但没有那不是我的问题。我没有任何与JavaScript的困难,并不需要调用一个JavaScript,但需要有孩子。ID可用于其他地方。我的问题是,我不能为child.id返回一个值。也许我不了解嵌套表单如何工作。使用上面的语法 - child.id - 我得到'未定义的局部变量或方法“child”' – 2012-02-20 14:47:43
谢谢@adnan。这仍然返回'未定义的本地变量或方法“子”' – 2012-02-20 14:14:08
查看编辑我的答案.. – Adnan 2012-02-20 22:58:40
我现在感到愚蠢。我完全忘记了/忽略了:f =>孩子的映射。卫生署!是的'f.object.attribute'现在完美运行。谢谢你,谢谢你,谢谢你。 (fields_for中的child的复数化在写问题时只是一个错误,实际的表单设置正确)。 – 2012-02-21 03:59:59