我有2个模型:用户和兴趣。
要获得特定用户的兴趣,您可以访问以下网址:
/users/1/interests
现在我的问题。每个用户可以有几个孩子,这是对其他用户的引用。现在我想通过这样做来得到一个特定的孩子:
/users/1/children/1/interests
但我不确定如何在routes.rb中设置它。两个URL都应该在interests_controller中调用show动作,我只想在这里检查:
def show
@user = User.find params[:id]
if params[:child_id]
@user = @user.children.find_by_id params[:child_id]
end
@interests = @user.interests
end
所以我想对两个URL使用相同的interests_controller,但我不知道如何在我的routes.rb中写出它?
答案 0 :(得分:0)
这是您需要进行嵌套的最佳资源:http://weblog.jamisbuck.org/2007/2/5/nesting-resources
在您的情况下,它可能看起来像这样:
map.resources :users do |users|
users.resources :children do |children|
children.resources :interests
end
end
但是,正如他在文章中提到的那样,我也会建议不要这样做。这种类型的URL与简单的/children/[id]/interests
和会话的良好使用没有实际的好处,并且它更容易维护。