我有这条路线
resources :posts, :controller => 'frontend/posts' do
resources :photos, :controller => 'frontend/posts'
end
所以frontend/posts_controller
处理这些请求:
/posts/:post_id/photos/:id
/posts/:id
有时:id
表示照片ID,在某些情况下表示帖子ID。
我希望该帖子始终使用:post_id
。是否可以在:id
中重命名:post_id
而无需添加自定义(match
...)路线?
感谢。
答案 0 :(得分:1)
存在:post_id是区分两条路线的原因。就个人而言,除非我有令人信服的理由偏离惯例,否则我会尽量避免使用。
答案 1 :(得分:1)
你应该写你的发现者来处理这两种情况。这比使用参数名称更容易:
@post = Post.find(params[:post_id] || params[:id])
话虽如此,我同意令人讨厌:id
参数根据资源调用的深度更改名称。
答案 2 :(得分:0)
我不确定这是否有帮助,或者只是在兔子洞的下方,但是你不能强迫它像那样:
match "posts/:post_id" => "posts#show"