第二个设计模型不使用生成的视图

jfe*_*ust 4 ruby-on-rails devise

我有一个User和一个Rep模型

devise_for :users, :controllers => {:registrations => 'user_registration'}
devise_for :reps
Run Code Online (Sandbox Code Playgroud)

我跑了

rails generate devise:views reps
Run Code Online (Sandbox Code Playgroud)

自定义视图显示在app/views/reps中

但是rep路径仍然使用内置的设计视图

渲染〜/ .rvm /宝石/红宝石1.9.2-P290 /宝石/设计-1.4.9 /应用/视图/设计/注册/ edit.html.erb

而不是生成的代表视图.

Joh*_*ing 26

我有同样的问题.我最终在文档中发现了这一点.

如果您的应用程序中有多个角色(例如"用户"和"管理员"),您会注意到Devise对所有角色使用相同的视图.幸运的是,Devise提供了一种自定义视图的简便方法.您需要做的就是在"config/initializers/devise.rb"中设置"config.scoped_views = true".

所以我将config.scoped_views切换为true,它有一个魅力:)

  • 这实际上是更好的答案. (2认同)

Rya*_*igg 8

只需将视图放在那里,Devise就不会使用它们.您需要指向Devise::RegistrationsController具有这些视图的右侧控制器,您可以通过调用此方法来执行此操作:

 devise_for :reps, :controllers => { :registrations => "reps/registrations" }
Run Code Online (Sandbox Code Playgroud)

这需要在app/controllers/reps/registrations_controller.rb以下位置定义新的控制器:

 class Reps::RegistrationsController < Devise::RegistrationsController

 end
Run Code Online (Sandbox Code Playgroud)

然后,您将在右侧目录中拥有该控制器使用的视图.