所以我得到了'No route matches'错误,并且对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| %>
看起来就像它发布到正确的位置一样,因为网址是使用'reset_password_url'生成的,它会发布到它,并且网址看起来应该......任何人都有任何想法?
更新
答案 0 :(得分:6)
在我的表单中,rails(正确地)假设因为我有一个用户使用form_for帮助器,我想更新用户,而不是新用户。
因此,它使用PUT方法发布我的表单。为了解决路由问题,我只需要将最后一条路由更改为:
match 'reset_password' => 'users#reset_password_submit', :as => :reset_password, :via => :put
我在webkit中使用Web Inspector查看整个请求之后才发现问题,并查看了发送的_ 方法参数。