我正在围绕嵌套资源(真棒btw),我对控制器中的编辑和更新操作有疑问。
我的路线设置如下:
resources :events do
resources :people
end
在我的People控制器中,我有以下新操作:
@event = current_user.events.find(params[:event_id])
@person = @event.people.build
@person.build_address
以及我的创建操作:
@event = current_user.events.find(params[:event_id])
@person = @event.people.build(params[:person])
这一切都很有效。
我不确定我需要为编辑和更新操作做些什么。谷歌搜索没有产生任何良好的联系。
以下是我的模特:
class Event < ActiveRecord::Base
belongs_to :user
belongs_to :address
has_many :people
accepts_nested_attributes_for :address, :allow_destroy => true
end
class Person < ActiveRecord::Base
belongs_to :event
belongs_to :address
accepts_nested_attributes_for :address, :allow_destroy => true
end
class Address < ActiveRecord::Base
has_many :people
has_many :events
end
我基本上想确保在编辑某人时,AR会更新正确的事件ID和地址ID以及此人的详细信息。
谢谢!
答案 0 :(得分:3)
您的型号设置不正确。你有一个
belongs_to
在事件地址和人员 - 地址关系的任一侧。在一对多的关系中,你需要有一个
has_many
在一侧,一个
belongs_to
另一方面。
除了你的控制器之外,它非常直接地设置你的编辑和更新动作。它就是你如何设置新的和创建动作。 这是一个Railscast,讨论嵌套资源。
注意:如果您更正了模型关系,则可以更轻松地使用控制器代码。
<强>更新强>
您的模特关系看起来很好。所以现在它很简单。我希望我链接的Railscast帮助你了解嵌套资源。
这是Nested Resources上另一个有用的资源。