我试图重命名 Devise 提供的所有注册路线,但现在我无法再更新帐户信息了。它通过 GET 请求呈现registrations#edit
操作没有问题,但 PUT 和 DELETE 请求都以某种方式进入 sign_up 路径。
这是我当前的路线文件:
...
devise_for :users, path: '', path_names: { sign_in: 'login', sign_out: 'logout', sign_up: 'signup' }, controllers: { registrations: "registrations" }, skip: [:registrations]
as :user do
get '/admin/cancel' => 'registrations#cancel', as: :cancel_user_registration
post '/signup' => 'registrations#create', as: :user_registration
get '/signup' => 'registrations#new', as: :new_user_registration
get '/admin/settings/account' => 'registrations#edit', as: :edit_user_registration
put '/admin/settings/account' => 'registrations#update', as: :update_user_registration
delete '/admin/settings/account' => 'registrations#destroy', as: :destroy_user_registration
end
现在,当我访问“/admin/settings/account”时,它会按预期呈现编辑帐户视图。但是“更新”按钮使用 PUT 方法指向“/signup”,而“取消我的帐户”链接也指向“/signup”,但使用方法 DELETE。
然后我深入研究了渲染“注册/编辑”的视图,发现了这些
<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> ...
... <%= link_to "Cancel my account", registration_path(resource_name), confirm: "Are you sure?", method: :delete %> ...
所以registration_path(resource_name)
实际上负责为 PUT 和 DELETE 生成正确的路由。但是由于我更改了默认的设计注册路线,它不再能够识别和吐出正确的路径。
有谁知道我该如何解决这个问题?实际上是什么registration_path(resource_name)
意思?