Rails Routing Question - "Нет совпадений маршрутов ..." - PullRequest
0 голосов
/ 07 марта 2011

У меня есть модель "Работа", к которой я добавляю новое действие "Предварительный просмотр". Чтобы поддержать это новое действие, я изменил route.rb следующим образом:

resources :jobs do
   member do
      get 'preview'
   end
end

Тогда на моей работе по созданию вакансии у меня есть следующее:

 if @job.save
    redirect_to preview_job_url

Однако, когда я сохраняю форму, вместо перенаправления на URL предварительного просмотра, я получаю следующую ошибку маршрутизации:

Routing Error
No route matches {:action=>"preview", :controller=>"jobs"}

Не могу понять, почему это происходит, так как URL работает правильно (http://localhost:3000/jobs/id/preview), и если я запускаю rake router, правильный маршрут, кажется, будет там:

preview_jobs GET    /jobs/preview(.:format)            {:action=>"preview", :controller=>"jobs"}

Есть идеи относительно того, что может происходить? Кажется, что все части на месте, но я новичок в Rails, так что я уверен, что упускаю что-то очевидное. Большое спасибо.

1 Ответ

3 голосов
/ 07 марта 2011

Вы определили «предварительный просмотр» как действие члена.Действия члена относятся к экземпляру модели.Когда вы вызываете preview_job_url, вам нужно передать конкретный объект Job или идентификатор Job, чтобы можно было создать URL.Это должно иметь смысл ... как Rails может создать вам URL-адрес, который ссылается на конкретную модель, если вы не укажете инфраструктуре, для какого задания вы хотите создать URL-адрес?1003 *

if @job.save
  redirect_to preview_job_url(@job)
...