1

从我的rake routes

     user_registration POST   /users(.:format)               devise/registrations#create
 new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new

因此,当我单击注册表单中的提交按钮时,它会将我移至/users.

我怎样才能改变它user_registration POST/users/sign_up(.:format)?我试过这样的事情:

  devise_for :users

  as :user do
    post 'sign_up' => 'devise/registrations#create', as: 'user_registration'
  end

但是存在冲突,因为user_registration前缀已经由devise_for

4

1 回答 1

0

要执行您想要的操作,您需要停止生成默认注册#create 操作。不幸的是,没有简单的方法可以做到这一点(或定制它)。我能找到的最好的方法是跳过为用户生成注册路由,然后使用 devise_scope 方法定义所有这些路由:

devise_for :users, skip: :registration
devise_scope :user do
  resource :registration, :as => :user_registration, :only => [ :new, :edit, :update, :destroy ], :path=> "/users", :path_names=> { :new =>"sign_up" }, :controller=>"devise/registrations"  do
    get :cancel
    post :sign_up, action: :create, as: ''
  end
end

这可能会被清理一下,但它会产生你所期望的:

    user_registration POST   /users/sign_up(.:format)       devise/registrations#create
new_user_registration GET    /users/sign_up(.:format)       devise/registrations#new

PS相关问题在此线程中讨论

于 2013-10-29T21:14:22.730 回答