restful routes重命名:id

时间:2010-12-02 18:00:47

标签: ruby-on-rails ruby-on-rails-3

我有这条路线

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 ...)路线?

感谢。

3 个答案:

答案 0 :(得分:1)

存在:post_id是区分两条路线的原因。就个人而言,除非我有令人信服的理由偏离惯例,否则我会尽量避免使用。

答案 1 :(得分:1)

你应该写你的发现者来处理这两种情况。这比使用参数名称更容易:

@post = Post.find(params[:post_id] || params[:id])

话虽如此,我同意令人讨厌:id参数根据资源调用的深度更改名称。

答案 2 :(得分:0)

我不确定这是否有帮助,或者只是在兔子洞的下方,但是你不能强迫它像那样:

match "posts/:post_id" => "posts#show"