В помощнике используются нестандартные маршруты рельсов.

У меня в route.rb есть

resources :clients_assessments do
  member do
    get :medical_edit
    get :mental_health_edit
    get :personal_edit
  end
  collection do
  end
end

Что дает маршруты

         medical_edit_clients_assessment GET    /clients_assessments/:id/medical_edit(.:format)       {:action=>"medical_edit", :controller=>"clients_assessments"}
   mental_health_edit_clients_assessment GET    /clients_assessments/:id/mental_health_edit(.:format) {:action=>"mental_health_edit", :controller=>"clients_assessments"}
        personal_edit_clients_assessment GET    /clients_assessments/:id/personal_edit(.:format)      {:action=>"personal_edit", :controller=>"clients_assessments"}
                     clients_assessments GET    /clients_assessments(.:format)                        {:action=>"index", :controller=>"clients_assessments"}
                                         POST   /clients_assessments(.:format)                        {:action=>"create", :controller=>"clients_assessments"}
                  new_clients_assessment GET    /clients_assessments/new(.:format)                    {:action=>"new", :controller=>"clients_assessments"}
                 edit_clients_assessment GET    /clients_assessments/:id/edit(.:format)               {:action=>"edit", :controller=>"clients_assessments"}
                      clients_assessment GET    /clients_assessments/:id(.:format)                    {:action=>"show", :controller=>"clients_assessments"}
                                         PUT    /clients_assessments/:id(.:format)                    {:action=>"update", :controller=>"clients_assessments"}
                                         DELETE /clients_assessments/:id(.:format)                    {:action=>"destroy", :controller=>"clients_assessments"}

Когда я пытаюсь использовать их во вспомогательном файле, например

route = medical_edit_clients_assessment_path(id)

Генерируется сообщение об ошибке

No route matches {:action=>"medical_edit", :controller=>"clients_assessments"}

я должен изменить его на

route = "/clients_assessment/#{able_id}/medical_edit"

чтобы обойти сообщение об ошибке. Что смешного в том, что маршрут, как

route = (able_id.nil? ? new_client_path : edit_client_path(able_id))

работает просто отлично.

Я знаю, что кто-то попросит об этом, так что вот весь route.rb и результат рейк-маршрутов

https://gist.github.com/3074287

Спасибо, Расс


person Russ Petersen    schedule 09.07.2012    source источник
comment
опубликуйте содержимое params[] Hash!   -  person davidb    schedule 09.07.2012


Ответы (1)


Это могло произойти, потому что id равен нулю

person Erez Rabih    schedule 09.07.2012
comment
Этот код внезапно заработал, вероятно, это были какие-то неверные данные. - person Russ Petersen; 14.07.2012