Rails 3路由:命名路由。 “没有路线匹配”

时间:2011-03-05 12:51:19

标签: ruby-on-rails-3 routing named-routing

所以我得到了'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'生成的,它会发布到它,并且网址看起来应该......任何人都有任何想法?

更新

  • 我正在使用Rails 3.0.4
  • 除了我在这里提到的那些之外,我已经尝试取出其他所有路线,而我仍然无法弄清楚为什么它不起作用。

1 个答案:

答案 0 :(得分:6)

想出来了!

在我的表单中,rails(正确地)假设因为我有一个用户使用form_for帮助器,我想更新用户,而不是新用户。

因此,它使用PUT方法发布我的表单。为了解决路由问题,我只需要将最后一条路由更改为:

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

我在webkit中使用Web Inspector查看整个请求之后才发现问题,并查看了发送的_ 方法参数。