如何从Rails中的嵌套表单记录返回列值(记录ID)?

时间:2012-02-20 14:02:19

标签: ruby-on-rails nested-forms

我在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?

我确定我在这里遗漏了一些简单的东西,但我看不出它是如何组合在一起的?

感谢任何有关相关信息的建议或指示。

谢谢!

2 个答案:

答案 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});"

这是你的问题吗?