Ruby on rails 无法重写设计路由
我正在使用Desive,我想定制它的URL:Ruby on rails 无法重写设计路由,ruby-on-rails,ruby,devise,routes,rake,Ruby On Rails,Ruby,Devise,Routes,Rake,我正在使用Desive,我想定制它的URL: users/sign_in --> account/login users/sign_up --> account/register users/edit --> account/profile ... 现在我的routes.rb如下所示: devise_scope :user do get '/account/login' => 'devise/sessions#new' post 'accoun
users/sign_in --> account/login
users/sign_up --> account/register
users/edit --> account/profile
...
现在我的routes.rb
如下所示:
devise_scope :user do
get '/account/login' => 'devise/sessions#new'
post 'account/login' => 'devise/sessions#create', as: :user_session
delete 'account/logout' => 'devise/sessions#destroy', as: :destroy_user_session
post 'account/password' => 'devise/passwords#update', as: :user_password
get 'account/password/forgot' => 'devise/passwords#new', as: :new_user_password
get 'account/password/edit' => 'devise/passwords#edit', as: :edit_user_password
put 'account/password' => 'devise/passwords#update'
get 'account/cancel' => 'devise/registrations#cancel', as: :cancel_user_registration
post 'account' => 'devise/registrations#create', as: :user_registration
get 'account/register' => 'devise/registrations#new', as: :new_user_registration
get 'account' => 'devise/registrations#edit', as: :edit_user_registration
put 'account' => 'devise/registrations#edit'
delete 'account' => 'devise/registrations#destroy'
end
devise_for :users
我设法重写配置文件、忘记、注册错误而不是登录:
因此,当我点击通用设计登录表单中的链接“注册”时,我被重定向到浏览器中的/register
,但当我点击“登录”链接时,我仍然被重定向到/users/Sign\u-in
而不是Login
我尝试了match
与post+get
的路线匹配,但没有成功。我知道,如果我自己生成表单,我可以决定链接的外观,但我更喜欢使用通用的Desive表单,而且我很好奇为什么其他路径可以工作
运行rake routes
会产生以下结果(我的routes中的前五行):
更新:我现在正在模仿DEVIDE的所有路线(请参见updated routes.rb)。但是我仍然被重定向到/users/sign\u in
你可以试试这个,这个很有效
查看更多帮助
这应该行得通。同时删除/account并将path account添加到routes文件中,如下所示
devise_scope :user, path: "account" do
get "login", :to => "devise/sessions#new", :as => "login"
get "signup" => "users/registrations#new", :as => "register"
get "edit" => "edit_user_registration", :as => "edit"
end
好的,这比试图重写路由要好得多
devise_for :users, :path => '', :path_names => {:sign_in => 'login', :sign_out => 'logout'}
devise_scope :user, path: "account" do
get "login", :to => "devise/sessions#new", :as => "login"
get "signup" => "users/registrations#new", :as => "register"
get "edit" => "edit_user_registration", :as => "edit"
end