【问题标题】:Helper method for initializing child object for a given class in Rails在 Rails 中为给定类初始化子对象的辅助方法
【发布时间】:2011-10-28 22:27:21
【问题描述】:

我有一个 has_many 关系的嵌套表单,使用 Accepts_nested_attributes_for 方法。如果我没有子对象,那么嵌套表单将不会显示在父表单中。因此,我需要初始化子对象。一种方法是:

# app/helpers/form_helper.rb
module FormHelper
  def setup_user(user)
   3.times { user.tasks.build }
   user
end
# app/views/users/_form.html.erb
<%= form_for(setup_user(user)) do |f| %>
  ...

如何将这种方法推广到其他嵌套形式?这是我想出的,但它不起作用

  def initialize_children(parent, children)
    parent.childrens ||= children.class.new
    1.times { parent.childrens.build }
    parent
  end

谢谢

【问题讨论】:

    标签: ruby-on-rails forms nested-forms


    【解决方案1】:

    通常,您应该在控制器中执行此操作。

    但让我们坚持使用您的代码:

    def initialize_children(parent, children_sym)
      parent.send(children_sym).build # I don't understand your ||= purpose so I've removed it
      parent
    end
    

    这样使用:

    initialize_children(user, :tasks)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多