开发者

restful routes rename :id

I have this routes

resources :posts, :controller => 'frontend/posts' do
 resources :photos, :controller => 'frontend/posts'
end

So frontend/posts_controller handles these requests:

/posts/:post_id/photos/:id
/posts/:id

Somtimes the :id me开发者_运维百科ans the photo id and in some cases the post id. I want that post always uses :post_id . Is it possible to rename :id in :post_id without adding custom(match ...) routes?

thanks.


You should just write your finders to handle both cases. It's easier than messing around with parameter names:

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

That being said, I agree that it's annoying that the :id parameter changes names depending on the depth of the resource call.


The presence of :post_id is what will differentiate between the two routes. Personally, unless I have a compelling reason to depart from convention, I try to avoid it.


I'm not sure if this helps or just goes further down the rabbit hole but can't you force it to be like that with:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜