Ruby on rails 如何在Desive plugin Rails中更改登录和注册URL
我正在我的新Rails应用程序中使用Desive插件。我的问题是Desive插件有默认的登录和注册根Ruby on rails 如何在Desive plugin Rails中更改登录和注册URL,ruby-on-rails,devise,Ruby On Rails,Devise,我正在我的新Rails应用程序中使用Desive插件。我的问题是Desive插件有默认的登录和注册根 /users/sign_in /users/sign_up 我需要把这个换成 /login /signup 为此,我使用了以下路由 devise_for :users do get "login", :to => "devise/sessions#new" get "signup", :to => "devise/registrations#new" end
/users/sign_in
/users/sign_up
我需要把这个换成
/login
/signup
为此,我使用了以下路由
devise_for :users do
get "login", :to => "devise/sessions#new"
get "signup", :to => "devise/registrations#new"
end
有了这个,我需要在视图中的任何地方指定“登录路径”和“注册路径”,新用户会话路径和新用户注册路径都会出现
我想要的是路由中的配置,它将“/login”和“/signup”映射到新用户会话路径和新用户注册路径
我看到一篇帖子,其中使用下面显示的路由路由/users/sign_in和/users/sign_up to/sign_in和/sign_up
devise_for :user, :as => ''
我需要一些这样的路由技术,它将/users/sign_in和/users/sign_up路由到/login和/signup
谁能帮我一下吗
更新:我已将routes.rb文件更改为
devise_for :users,
:controllers => { :sessions => 'devise/sessions'},
:skip => [:sessions] do
get '/login' => "devise/sessions#new", :as => :new_user_session
post '/login' => 'devise/sessions#create', :as => :user_session
get '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session
get '/signup' => 'devise/registrations#new', :as => :new_user_registration
end
但是,当我在视图中使用指向“新用户注册”的链接时,它在浏览器中不会显示为“/signup”这里的选项比您要求的要多一些,但很明显:
devise_for :users,
:controllers => { :registrations => "users/registrations",
:confirmations => "users/confirmations",
:sessions => 'devise/sessions'},
:skip => [:sessions] do
get '/signin' => "devise/sessions#new", :as => :new_user_session
post '/signin' => 'devise/sessions#create', :as => :user_session
get '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session
get "/signup" => "users/registrations#new", :as => :new_user_registration
end
更重要的是,通过:registrations=>“users/registrations”
我们还可以自定义重定向:
class Users::RegistrationsController < Devise::RegistrationsController
protected
def after_sign_up_path_for(resource)
welcome_path # it's not a home path
end
def after_update_path_for(resource)
edit_user_registration_path
end
end
类用户::注册控制器<设计::注册控制器
受保护的
注册后的def路径(资源)
欢迎来到这条路,这不是回家的路
结束
更新后的def路径(资源)
编辑用户注册路径
结束
结束
Deviate有一个很好的答案。如果我正确地阅读并理解了你的问题,那么你就是在“匹配” devise_for :users match "/login" => "devise/sessions#new" match "/signup" => "devise/registrations#new" 为:用户设计 匹配“/登录”=>“设计/会话#新建” 匹配“/注册”=>“设计/注册#新” 确保它们的顺序正确,因为它们是根据文件中的行号匹配的
更多信息请访问:我可以通过在我的路线中使用以下代码来解决我的问题
devise_for :users,
:controllers => { :sessions => 'devise/sessions'},
:skip => [:sessions] do
get '/login' => "devise/sessions#new", :as => :new_user_session
post '/login' => 'devise/sessions#create', :as => :user_session
get '/signout' => 'devise/sessions#destroy', :as => :destroy_user_session
get "/signup" => "devise/registrations#new", :as => :new_user_registration
end
但在我看来,如果我使用
link_to "Register", new_user_registration_path
在我的浏览器中,它显示为
/user/sign_up and not as /signup
但是如果我直接输入/注册,我将获得注册页面。我需要在这里进行映射。我希望不会太晚;)
下面是它的工作原理(只需将其粘贴到routes.rb中,您就可以开始了):
编辑config/routes.rb
为以下用户设计路径:路径:'
devise_for :users, path: '', path_names: { sign_in: 'login', sign_out: 'logout', password: 'secret', confirmation: 'verification', unlock: 'unblock', registration: 'register', sign_up: 'cmon_let_me_in' }
new_user_session GET /login(.:format) devise/sessions#new
user_session POST /login(.:format) devise/sessions#create
destroy_user_session DELETE /logout(.:format) devise/sessions#destroy
user_password POST /secret(.:format) devise/passwords#create
new_user_password GET /secret/new(.:format) devise/passwords#new
edit_user_password GET /secret/edit(.:format) devise/passwords#edit
PATCH /secret(.:format) devise/passwords#update
PUT /secret(.:format) devise/passwords#update
cancel_user_registration GET /register/cancel(.:format) devise/registrations#cancel
user_registration POST /register(.:format) devise/registrations#create
new_user_registration GET /register/cmon_let_me_in(.:format) devise/registrations#new
edit_user_registration GET /register/edit(.:format) devise/registrations#edit
PATCH /register(.:format) devise/registrations#update
PUT /register(.:format) devise/registrations#update
DELETE /register(.:format) devise/registrations#destroy
由于这可能仍然是人们在寻找该问题时得到的n°1结果,因此有必要指出,现在有一种简单的方法可以做到这一点:
devise_for :users, path: '', path_names: { sign_in: 'login', sign_up: 'signup'}
参考资料:谢谢你,伙计。我的工作很好。但是“/signup”没有映射到“新用户注册路径”。我在我的路线中添加了你的代码。我还需要添加什么吗?这是因为我有定制的注册控制器,正如我上面所示。这里是一个
get”/signup“=>“users/registrations#new”
的地方,您可以将users
更改为design
,并从中删除:registrations=>“users/registrations”
:contorllers
hash.designe\u for:users,:controllers=>:sessions=>“design/sessions”,:skip=>[:sessions]do get'/login'=>“设计/会话#新建”;:as=>:new_user_session post'/login'=>“设计/会话#创建”;:as=>:user_session get'/signout'=>“设计/会话#销毁”;:as=>:destroy_user_session get“/signup”=>“设计/注册#新建”,:as=>:new_user_registration end但是当我在我的视图中使用“new_user_registration”的链接时,它不会显示为“/signup”Hi Voldy你能看看我的答案并找出问题所在吗?你能确定你当前的路线吗(设计部分)作为您问题的更新?使用此路由,我需要在我的视图中指定“/login”和“/signup”。因此,单击此链接将进入登录和注册页面。我所看到的是Desive插件有一个指向注册页面的链接。单击此链接,浏览器中的url必须为“/signup”。使用Desive默认路由,链接类似于“/use”注册。希望你明白我的问题。请帮忙
devise_for :users, path: '', path_names: { sign_in: 'login', sign_up: 'signup'}