Как отправить и сохранить дочернюю форму с родителем в виде вложенных полей? - PullRequest
0 голосов
/ 28 марта 2011

Предположим, у вас есть Child класс:

Child < AR
 belongs_to :parent
end

Который связан с Parent классом:

Parent < AR
 has_many :children
end

Я хотел бы создать форму в действии / представлении ChildrenController, которая позволяет пользователю создавать новый Child и новый Parent, если ни один не был назначен (я не хочу ' ParentsController, поскольку оно не имеет такого же отношения к приложению).

Я создал простую форму в представлении new.haml.html:

= simple_form @child do |c|
  c.input :field_for_child
  c.association :parent do |p|
    p.input :field_for_parent

В результате получается хэш params, который выглядит как "child" => { "field_for_child" => "value1", "parent" => { "field_for_parent: => "value2" } }

Как я могу сохранить "потомок" и "родитель" как можно меньше строк?

Ответы [ 2 ]

0 голосов
/ 28 марта 2011

в вашей модели вы пишете

class Child < AR
  belongs_to :parent
  accepts_nested_attributes_for :parent
end

и затем внутри вашего контроллера вы можете просто сохранить ребенка, используя заданные атрибуты.

0 голосов
/ 28 марта 2011
@child.parent_id = (params[:parent][:field_for_parent]) || Parent.create(...).id

Это было бы мое образованное предположение ... Где "(...)" будут ваши аргументы для нового родителя

...