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