В routes.rb
,Rails 3 - Как изменить параметр: идентификатор ресурсов
resources :projects
дает следующие маршруты
/projects/
/projects/:id
При использовании вложенных ресурсов, как
resources :projects do
resources :photos
end
он дает следующие маршруты:
/projects/
/projects/:id
/projects/:project_id/photos
/projects/:project_id/photos/:id
Это дает мне проблемы, потому что я должен написать контроллер конкретного before_filter выбора между params[:id]
и params[:project_id]
для выполнения Project.find(params[:project_id] || param[:id])
Есть ли способ, чтобы изменить маршруты, чтобы иметь :project_id
сам для всех маршрутов?
/projects/
**/projects/:project_id**
/projects/:project_id/photos
/projects/:project_id/photos/:id
Это не должно быть проблемой, потому что ваши 'Project.find params [: id]' будут находиться в вашем 'ProjectController' и вашем' Proj ect.find params [: project_id] 'будет в вашем' PhotosController'. Если у вас есть что-то действительно уникальное, вы можете использовать http://guides.rubyonrails.org/routing.html#adding-more-restful-actions и 'get: photos, on:: member', который сделает'/projects /: id/photos' и используйте ': id' для всех путей'/projects/'вместо': project_id'. – Chloe
Вы можете попробовать этот трюк: https://stackoverflow.com/a/32664225/2131983 –