1

そのため、「ルートが一致しません」というエラーが発生し、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メソッドは正常に機能します。getページで生成されたフォームPOSTがこのように開始されると、ルーティングエラーが発生します。

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

URLは「reset_password_url」を使用して生成され、投稿されており、URLは適切に表示されているため、適切な場所に投稿されているようです...誰かアイデアはありますか

アップデート

  • Rails3.0.4を使用しています
  • ここで説明したルートを除いて、他のすべてのルートを試してみましたが、なぜそれが機能しないのかまだわかりません。
4

1 に答える 1

6

理解した!

私のフォームでは、railsは(正しく)form_forヘルパーで使用しているユーザーがいるので、新しいユーザーを作成するのではなく、ユーザーを更新したいと想定していました。

したがって、フォームを投稿するためにPUTメソッドを使用していました。ルーティングの問題を解決するには、最後のルートを次のように変更する必要がありました。

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

この問題を見つけたのは、webkitでWeb Inspectorを使用してリクエスト全体を確認し、送信された_メソッドパラメーターを確認した後だけです。

于 2011-03-06T13:45:46.443 に答える