Маршрутизация элементов Rails, должна быть простой?

#ruby-on-rails #parameters #routes #member

#ruby-on-rails #параметры #маршруты #Участник

Вопрос:

Для этого маршрута:

 resources :projects do
  member do
    resources :stakeholders
  end
end
 

Сгенерированные маршруты:

     projects_stakeholders GET    /projects/projects/:id/stakeholders(.:format)                                                  {:action=>"index", :controller=>"projects/stakeholders"}
                          POST   /projects/projects/:id/stakeholders(.:format)                                                  {:action=>"create", :controller=>"projects/stakeholders"}
    new_projects_stakeholder GET    /projects/projects/:id/stakeholders/new(.:format)                                              {:action=>"new", :controller=>"projects/stakeholders"}
    edit_projects_stakeholder GET    /projects/projects/:id/stakeholders/:id/edit(.:format)                                         {:action=>"edit", :controller=>"projects/stakeholders"}
projects_stakeholder GET    /projects/projects/:id/stakeholders/:id(.:format)                                              {:action=>"show", :controller=>"projects/stakeholders"}
 

Поскольку эти маршруты имеют два параметра a: id, если у меня есть, например, URL-адрес «проекты / 4 / заинтересованные стороны / 11»

В моем файле журнала я вижу это:

 Parameters: {"id"=>"11"}
 

Как я могу получить доступ к моему project_id изнутри моего контроллера?

Спасибо!!!

Ответ №1:

Вам не нужен member do блок вокруг него. Просто сделайте это, и вы должны начать видеть a project_id в своих параметрах:

 resources :projects do
  resources :stakeholders
end
 

Комментарии:

1. Даже проще, чем я думал… Спасибо! Означает ли это, что я должен использовать «member do» только тогда, когда я хочу добавить действие к своему контроллеру?

2. Да, если вы хотите добавить действие к определенному project объекту, вы бы использовали member route .