我有这样的路线:更改参数不名称嵌套资源父
resources :tags do
resources :comments
end
所以:create
行动的意见有以下形式
tag_comments POST /tags/:tag_id/comments(.:format)
如何从:tag_id
改变paramenter名:commentable_id
?
我有这样的路线:更改参数不名称嵌套资源父
resources :tags do
resources :comments
end
所以:create
行动的意见有以下形式
tag_comments POST /tags/:tag_id/comments(.:format)
如何从:tag_id
改变paramenter名:commentable_id
?
map.tags do
resources :comments, :path_prefix => '/tags/:commentable_id'
end
或通过的before_filter
before_filter :tag2commentable
private
def tag2commentable
params[:commentable_id] = params[:tag_id] unless params[:tag_id].blank?
end
把它放在你的控制器
其中一个可能是你想要什么:
map.resources :commentables, :as => "tags", :collection => :comments
map.resources :commentables, :as => "tags", :has_many => :comments
我认为后者是正确的,这解析为:
$ rake routes
commentable_comments GET /tags/:commentable_id/comments(.:format) {:action=>"index", :controller=>"comments"}
...
但我想你的模型关系可能会以某种方式搞砸,因为这没有意义。不要介意修改你的文章并添加关于你的模型关系的信息吗?
我想有
map.resources :commentables, :has_many => :tags
或
map.resources :taggables, :has_many => :comments
会更有意义:
commentable_tags GET /commentables/:commentable_id/tags(.:format) {:action=>"index", :controller=>"tags"}
taggable_comments GET /taggables/:taggable_id/comments(.:format) {:action=>"index", :controller=>"comments"}
我认为将资源名称定义为除您的模型名称之外的问题是多态url方法将失败。至少这是我的经验。 – 2011-08-06 08:52:03
什么错与下面的解决方案? – 2010-06-17 00:36:45