非常简单的问题,但即使在浏览Rails路由指南之后,我似乎无法弄清楚如何做到这一点。
假设主题已嵌套资源帖子。
主题的帖子都列在帖子#index(/topics/:topic_id/messages
)中。主题#show没有任何用途。我希望在/topics/:topic_id
请求时检索Posts #index,而不必在主题控制器中粘贴重定向。
谢谢!
更新
我能够得到所需的结果:
的routes.rb
match 'forums/:forum_id' => 'topics#index', :as => 'forum_topics', :via => :get
match 'topics/:topic_id' => 'messages#index', :as => 'topic_messages', :via => :get
resources :forums, :shallow => true, :except => :show do
resources :topics, :shallow => true, :except => :show do
resources :messages
end
end
但是,我不确定这是否是最好的方法。
更新2 上面的方法打破了其他CRUD方法(比如#create)。仍然在寻找一种解决方案来保持/消息不在网址中。
答案 0 :(得分:0)
添加此路线
get "/topics/:topic_id" => redirect("/topics/%{topic_id}/messages")
<强> UPD 强>
没有重定向:
get "/topics/:id" => "topic::Messages#index"
或者,如果您使用shallow
:
get "/topics/:id" => "messages#index"
resources :forums, :shallow => true, :except => :show do
resources :topics, :shallow => true, :except => :show do
resources :messages
end
end