Rails 3 Routes: Именованные маршруты. "Нет совпадений маршрутов" - PullRequest
1 голос
/ 05 марта 2011

Итак, я получаю сообщение об ошибке «Нет совпадений маршрутов», и, будучи новичком в Rails 3 (и Rails в целом), я действительно не знаю, в чем проблема.Вот подходящие маршруты:

resources :users
#...
match 'reset_password(/:reset_password_code)' => 'users#reset_password', :as => :reset_password, :via => :get
match 'reset_password' => 'users#reset_password_submit', :as => :reset_password, :via => :post

Метод GET работает отлично.Я получаю ошибку маршрутизации, когда форма POST, сгенерированная на странице получения, которая начинается следующим образом.

<%= form_for @user, :url => reset_password_url do |f| %>

Это выглядит , как будто он отправляет в нужное место, так как URLсгенерированный с помощью reset_password_url, он публикует его, и URL выглядит так, как должен ... у кого-нибудь есть идеи?

ОБНОВЛЕНИЕ

  • I 'Я использую Rails 3.0.4
  • Я пробовал использовать любой другой маршрут, кроме упомянутых здесь, и до сих пор не могу понять, почему он не работает.

1 Ответ

6 голосов
/ 06 марта 2011

Разобрался!

В моей форме rails (правильно) предполагал, что, поскольку у меня был пользователь, которого я использовал с помощником form_for, я хотел обновить пользователя, а не создать нового.

Поэтому он использовал метод PUT для публикации моей формы. Чтобы решить проблему маршрутизации, мне просто нужно было изменить последний маршрут на:

match 'reset_password' => 'users#reset_password_submit', :as => :reset_password, :via => :put

Я обнаружил проблему только после использования Web Inspector в webkit, чтобы увидеть весь запрос, и посмотрел на параметр _ method , который отправляется.

...