остальные маршруты переименовать: id - PullRequest
1 голос
/ 02 декабря 2010

у меня есть эти маршруты

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

Так frontend/posts_controller обрабатывает эти запросы:

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

Иногда :id означает идентификатор фотографии и в некоторых случаях идентификатор записи. Я хочу, чтобы этот пост всегда использовал :post_id. Можно ли переименовать :id в :post_id без добавления пользовательских (match ...) маршрутов?

спасибо.

Ответы [ 3 ]

1 голос
/ 02 декабря 2010

Вы должны просто написать свои искатели для обработки обоих случаев.Это проще, чем возиться с именами параметров:

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

При этом я согласен, что раздражает, что параметр :id меняет имена в зависимости от глубины вызова ресурса.

1 голос
/ 02 декабря 2010

Наличие: post_id - это то, что будет отличать эти два маршрута.Лично, если у меня нет веских причин для отказа от соглашения, я стараюсь избегать его.

0 голосов
/ 02 декабря 2010

Я не уверен, поможет ли это или просто пойдет дальше по кроличьей норе, но вы не можете заставить его быть таким с:

match "posts/:post_id" => "posts#show"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...