Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无法重写设计路由_Ruby On Rails_Ruby_Devise_Routes_Rake - Fatal编程技术网

Ruby on rails 无法重写设计路由

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

我正在使用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 '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