Создать нового ребенка на шоу родителей - PullRequest
3 голосов
/ 26 февраля 2011

В представлении «Показать» существующего Родителя я хотел бы иметь форму для создания дочерних элементов.

Я выяснил, как создать дочернюю форму и включить ее в шоу Родителя, но не исключить поле parent_id. Как я могу назначить parent_id ребенку без использования поля формы?

1 Ответ

7 голосов
/ 26 февраля 2011

Я думаю, что лучший способ справиться с этим - использовать маршруты членов для родительского контроллера, чтобы при создании дочернего элемента вы всегда знали, к какому родительскому элементу он принадлежит через маршрутизацию.Например:

# routes.rb
resources :parents do
  member do
    post 'create_child'
  end
end

И затем, на ваш взгляд,

# parents/show.html.erb
<%= form_for @child, :url => create_child_parent_path(@parent) do |f| %>
...
<% end %>

И, наконец, в вашем контроллере

# parents_controller.rb
def create_child
  @parent = Parent.find(params[:id])
  @child = @parent.children.build(params[:child])
  if @child.save
    @child = Child.new
  end
  render :action => :show
end

Ключ здесь в том, что, хотя форма содержитнет информации о родителе, parent_id назначается по умолчанию, когда вы используете метод построения для ассоциации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...