Ruby on rails 设计:重复路由条目,尽管我有自定义条目
当我运行Ruby on rails 设计:重复路由条目,尽管我有自定义条目,ruby-on-rails,devise,routes,Ruby On Rails,Devise,Routes,当我运行rake routes | grep sessions时,尽管已经有了自己的设置,但仍会收到重复的条目 这是我的输出:(顺便说一句,这些不是所有的副本。) 最上面的三个是designe中的默认路由设置,最下面的三个是我在config/routes.rb中添加的设置 以下是我的config/routes.rb文件中有关Desive的示例: Rails.application.routes.draw do root to: 'pages#index' # Users devis
rake routes | grep sessions
时,尽管已经有了自己的设置,但仍会收到重复的条目
这是我的输出:(顺便说一句,这些不是所有的副本。)
最上面的三个是designe中的默认路由设置,最下面的三个是我在config/routes.rb
中添加的设置
以下是我的config/routes.rb
文件中有关Desive的示例:
Rails.application.routes.draw do
root to: 'pages#index'
# Users
devise_for :users, controllers: {
# I override a few actions in my own controller so I needed this
registrations: 'users/registrations',
}
# FYI: as is an alias for devise_scope
as :user do
# devise/sessions_controller handlers
get 'login', to: 'devise/sessions#new'
post 'login', to: 'devise/sessions#create'
delete 'logout', to: 'devise/sessions#destroy'
#.... other registrations controller settings that are also getting duplicated
end
# .... all my other application routes
end
我想我要问的是,既然我已经创建了自己的路由,如何从designe中抑制默认路由?如果您需要更多我的rake routes
输出或config/routes.rb
文件,我可以提交全部内容
编辑:
Ok看起来我需要在我的
design\u for:users
块中添加一个:path\u name
散列。从中,我可以在页面末尾看到路径的选项选择。同时删除:path
选项,我得到了一个与我想要的匹配的无冲突版本
以下是我必须做的事情,以使它(大部分)正确:
它并不完全完美,所以我会给任何人一个答案,告诉我如何获得:
root GET / pages#index
new_user_session GET /sign-in(.:format) devise/sessions#new
user_session POST /sign-in(.:format) devise/sessions#create
destroy_user_session DELETE /sign-out(.:format) devise/sessions#destroy
cancel_user_registration GET /register/cancel(.:format) users/registrations#cancel
new_user_registration GET /register(.:format) users/registrations#new
edit_user_registration GET /register/edit(.:format) users/registrations#edit
user_registration PATCH /register(.:format) users/registrations#update
PUT /register(.:format) users/registrations#update
DELETE /register(.:format) users/registrations#destroy
POST /register(.:format) users/registrations#create
password GET /password(.:format) devise/passwords#new
reset_password GET /reset-password(.:format) devise/passwords#edit
PATCH /reset-password(.:format) devise/passwords#update
PUT /reset-password(.:format) devise/passwords#update
POST /password(.:format) devise/passwords#create
I DONT WANT THE FOLLOWING IN MY ROUTES:
new_user_password GET /new(.:format) devise/passwords#new
edit_user_password GET /edit(.:format) devise/passwords#edit
user_password PATCH / devise/passwords#update
PUT / devise/passwords#update
POST / devise/passwords#create
我可以将:password=>''
更改为:password=>“重置密码”
,但随后我得到以下信息:
new_user_password GET /reset-password/new(.:format) devise/passwords#new
edit_user_password GET /reset-password/edit(.:format) devise/passwords#edit
POST /reset-password(.:format) devise/passwords#create
我想要的是:
new_user_password GET /password(.:format) devise/passwords#new
edit_user_password GET /reset-password(.:format) devise/passwords#edit
POST /password(.:format) devise/passwords#create
Ok看起来我需要在我的
design\u for:users
块中添加一个:path\u name
散列。从中,我可以在页面末尾看到路径的选项选择。同时删除:path
选项,我得到了一个与我想要的匹配的无冲突版本
编辑:
在我找到的(并包括在我的问题中)之上,我还找到了:skip
选项。有人已经问了我一个类似的问题,对此的完美答案(告诉Desive不要生成任何我想要覆盖的路线)如下:
确定看起来我需要向我的
设计:用户
块中添加一个:path\u名称
散列。从中,我可以在页面末尾看到路径的选项选择。同时删除:path
选项,我得到了一个与我想要的匹配的无冲突版本
编辑:
在我找到的(并包括在我的问题中)之上,我还找到了:skip
选项。有人已经问了我一个类似的问题,对此的完美答案(告诉Desive不要生成任何我想要覆盖的路线)如下:
new_user_password GET /reset-password/new(.:format) devise/passwords#new
edit_user_password GET /reset-password/edit(.:format) devise/passwords#edit
POST /reset-password(.:format) devise/passwords#create
new_user_password GET /password(.:format) devise/passwords#new
edit_user_password GET /reset-password(.:format) devise/passwords#edit
POST /password(.:format) devise/passwords#create