【发布时间】:2015-03-08 15:55:48
【问题描述】:
我有一个简单的用户模型的简单设计安装。我用默认路由确认一切正常(注册、丢失密码等),然后开始像这样自定义:
devise_for :users, :skip => [:sessions, :registrations, :passwords]
as :user do
get 'signin' => 'devise/sessions#new', :as => :new_user_session
post 'signin' => 'devise/sessions#create', :as => :user_session
delete 'signout' => 'devise/sessions#destroy', :as => :destroy_user_session
get 'register/cancel' => 'devise/registrations#cancel', :as => :cancel_user_registration
post 'register' => 'devise/registrations#create', :as => :user_registration
get 'register' => 'devise/registrations#new', :as => :new_user_registration
get 'account' => 'devise/registrations#edit', :as => :edit_user_registration
patch 'account' => 'devise/registrations#update'
put 'account' => 'devise/registrations#update'
delete 'account' => 'devise/registrations#destroy'
post 'password' => 'devise/passwords#create', :as => :user_password
get 'password/forgot' => 'devise/passwords#new', :as => :new_user_password
get 'password/reset' => 'devise/passwords#edit', :as => :edit_user_password
patch 'password' => 'devise/passwords#update'
put 'password' => 'devise/passwords#update'
end
然而,忘记密码页面会创建一个如下所示的 POST 路径:
<form class="new_user" id="new_user" action="/password.user" accept-charset="UTF-8" method="post">
...
</form>
从相应的观点来看:
<%= form_for(resource, as: resource_name, url: password_path(resource_name), html: { method: :post }) do |f| %>
使用默认设计路由,url 正确显示为/users/password,但使用我的自定义路由,我得到/password.user。好像只有这一条路。
我知道简单的解决方法是将password_path(resource_name) 更改为password_path,但我想了解为什么这首先会中断。
【问题讨论】:
标签: ruby-on-rails devise routes