如何在登录路径后隐藏控制器名称的url设置?
当我重定向到main_index_path
从after_sign_in_path_for(resource)
设计,我得到localhost:3000\main
。我怎样才能使它只显示localhost:3000
?如何在登录路径后隐藏控制器名称的url设置?
如果您的遗赠是与Contact
模型
的routes.rb相关
authenticated :contact do
root :to => "controller#action"
end
unauthenticated :contact do
devise_scope :contact do
get "/" => "devise/sessions#new"
end
end
如果你不介意有一个“脸谱”流量(任何东西之前登录),你可以使用以下:
#config/routes.rb
root "main#index"
#app/controllers/main_controller.rb
class MainController < ApplicationController
before_action :authenticate_user!
end
您将需要在01改变main_index_path
到方法。
着陆
如果你想有一个单独的根路径(着陆页/内容页等),你就可以从Devise
使用authenticate :user
指令:
#config/routes.rb
authenticate :user do #-> has to login to see
root "main#index", as: :authenticated_root #-> url.com
end
unauthenticated :user do #-> if not logged in
root "application#landing", as: :root #-> url.com
resources :pages, path: "blog" #-> url.com/blog
end
以上将让您能够在applicationcontroller
中设置“登陆”页面,如果用户未登录,将显示该页面。如果用户通过身份验证,他们将看到main#index
当他们浏览到url.com
我当时想要的是什么但是,我最终将'before_action:authenticate_user!'放在'application_controller.rb'而不是'main_controller.rb'上,并且在'routes.rb'上有'root'main#index''' – Cuzox
好的工作,谢谢让我知道 –
但我已经在devise_scope中定义了root用户:user do root to:“devise/sessions#new”end – Cuzox
如果我得到'/'=>“main#index” ,作为:根,但这种混乱制定 – Cuzox
@Cuzox检查我的编辑,这有帮助吗? – Nithin