Customize part of devise custom routes, 基本上我不知道Rails routing =(
Customize part of devise custom routes, basically I don't know Rails routing =(
我在学习Rails路由时感觉我的大脑离开了大楼......我想不通。
所以我定制了一些设计控制器,因此我更新了路由文件,如下所示:
devise_for :users, controllers: {
registrations: "users/registrations",
sessions: "users/sessions",
passwords: "users/passwords"
}
效果很好。它给了我这样的路径:
new_user_registration GET /users/sign_up(.:format) users/registrations#new
现在的挑战是我想 运行 使用 Google Analytics 进行 A/B 测试,我需要另外 2 页才能注册。
所以在我的控制器中,这就是我要修改的方式:
class Users::RegistrationsController < Devise::RegistrationsController
def new
end
# ADD BELOW
def new_control
end
def new_test
end
end
但我不知道如何修改我的路由,以便我在旧路由之外还有这 2 条新路由 new_user_registration_path
(请注意,这些新路由的命名路径助手并不重要,所以对我来说很重要,因为我从来没有真正使用过它)
GET /users/sign_up/control(.:format) users/registrations#new_control
GET /users/sign_up/test(.:format) users/registrations#new_test
请注意,我想保留 devise_for
代码创建的所有其他可爱路线,例如 create
和 edit
操作
您可以像在 rails 应用程序中一样正常访问指定路线。您唯一需要做的就是将路线包裹在 device_scope
中。当您尝试在不添加 device_scope
.
的情况下访问路由时,这也会显示为警告
所以在你的情况下路线应该是这样的:
devise_scope :user do
get 'users/sign_up/control' => 'users/registrations#new_control'
get 'users/sign_up/test' => 'users/registrations#new_test'
end
我在学习Rails路由时感觉我的大脑离开了大楼......我想不通。
所以我定制了一些设计控制器,因此我更新了路由文件,如下所示:
devise_for :users, controllers: {
registrations: "users/registrations",
sessions: "users/sessions",
passwords: "users/passwords"
}
效果很好。它给了我这样的路径:
new_user_registration GET /users/sign_up(.:format) users/registrations#new
现在的挑战是我想 运行 使用 Google Analytics 进行 A/B 测试,我需要另外 2 页才能注册。
所以在我的控制器中,这就是我要修改的方式:
class Users::RegistrationsController < Devise::RegistrationsController
def new
end
# ADD BELOW
def new_control
end
def new_test
end
end
但我不知道如何修改我的路由,以便我在旧路由之外还有这 2 条新路由 new_user_registration_path
(请注意,这些新路由的命名路径助手并不重要,所以对我来说很重要,因为我从来没有真正使用过它)
GET /users/sign_up/control(.:format) users/registrations#new_control
GET /users/sign_up/test(.:format) users/registrations#new_test
请注意,我想保留 devise_for
代码创建的所有其他可爱路线,例如 create
和 edit
操作
您可以像在 rails 应用程序中一样正常访问指定路线。您唯一需要做的就是将路线包裹在 device_scope
中。当您尝试在不添加 device_scope
.
所以在你的情况下路线应该是这样的:
devise_scope :user do
get 'users/sign_up/control' => 'users/registrations#new_control'
get 'users/sign_up/test' => 'users/registrations#new_test'
end