自定义部分设计自定义路由,基本上我不知道Rails路由=(

时间:2015-07-25 23:12:22

标签: ruby-on-rails devise routing routes 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测试,我需要再增加两页才能进行注册。

所以在我的控制器中,这就是我要修改的方式:

class Users::RegistrationsController < Devise::RegistrationsController

  def new
  end

  # ADD BELOW
  def new_control
  end

  def new_test
  end
end

但我无法弄清楚如何修改我的路由,以便在旧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代码创建的所有其他可爱路线,例如createedit操作

1 个答案:

答案 0 :(得分:0)

您可以像在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