我有這樣的路線:更改參數不名稱嵌套資源父
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