Ошибка маршрутизации с Rails 3 с участниками - PullRequest
3 голосов
/ 02 февраля 2011

У меня есть следующий маршрут в рельсах 3:

resources :jobs do 
    member do 
      post :seller_job_submitted
    end
  end

И следующая форма

=form_for job, :url=>seller_job_submitted_job_path(job), :remote=>true do |f|

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

Started POST "/jobs/74/seller_job_submitted" for 127.0.0.1    
ActionController::RoutingError (No route matches "/jobs/74/seller_job_submitted"):

но когда я запускаю rake routes | grep seller_job_submitted, я думаю, что получаются правильные результаты:

seller_job_submitted_job POST   /jobs/:id/seller_job_submitted(.:format)                  {:action=>"seller_job_submitted", :controller=>"jobs"}

Есть идеи о том, что может происходить?

Спасибо!

Ответы [ 3 ]

0 голосов
/ 02 февраля 2011

Возможно использовать put вместо post? Или используйте :post в качестве метода в форме отправки.

Вы можете определить, является ли это проблемой, посмотрев метод REST для сгенерированной формы (найдите скрытое поле в источнике страницы).

Короче говоря, возможно, Rails каким-то образом ожидает POST для этого URL, но получает PUT.

0 голосов
/ 07 июня 2011

Да, это ошибка регрессии в Rails 3. Оказывается, вы должны быть осторожны с использованием POST в вашем маршруте.

0 голосов
/ 02 февраля 2011

Предполагается, что вы определили метод seller_job_submitted в модели и контроллере.Замените ваш код на

resources :jobs    
match "jobs/:id/seller_job_submitted" => "jobs#seller_job_submitted", :as => "seller_job_submitted"

Затем в теге form_for используйте :url=>seller_job_submitted_path

Это должно решить вашу проблему: вы явно не определяли seller_job_submitted_job_path.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...