我有模型Partner
及其控制器和很多视图。然后我将Devise
添加到此模型中。
我想自定义注册和登录视图,所以我做了这个命令:
rails generate devise:views partners
它为我生成了views/partners
文件夹中的新视图。我打开了partners/registrations/new.html.erb
文件并编辑了此表单。当我打开sign up
页面时,它会向我显示旧表单而不是我编辑的表单。为什么呢?
更新
我只需要在config.scoped_views = true
文件中添加config/initializers/devise.rb
。
我为表单添加了新字段,但它们并不存在。在Devise网站中,他们说要在我的应用程序控制器中使用configure_permitted_parameters
来设计接受新表单元素的值。
但是,我将有一个由设计创建的多个模型,它们有自己的字段。他们说,需要创建Sanitizer
类。我必须在哪里创建这个Sanitizer
类?
答案 0 :(得分:0)
devise.rb
中有一个名为scoped_views
的设置,该设置默认情况下处于关闭状态,您必须启用它以确保您在应用程序中使用自定义视图,而不是从默认devise视图中使用
答案 1 :(得分:-1)
Registration#new
将呈现views/devise/registrations/new.html.erb
。当你对views/partners/registrations/new.html.erb
进行更改时,这就解释了为什么你不会看到这些变化。
<强>更新强> 如果您有多个设计模型,则将相应地定义路径。在你的情况下,它可能是这样的
devise_for :partners, :controllers => {:registrations => "partner_registrations"}
devise_for :users, :controllers => {:registrations => "user_registrations"}
您可以在views/devise/partner_registrations/new.html.erb
和views/devise/user_registrations/new.html.erb
虽然您的相应控制器将是
#app/controllers/user_registrations_controller.rb
class UserRegistrationsController < Devise::RegistrationsController
#Your Code Here
end
#app/controllers/partner_registrations_controller.rb
class PartnerRegistrationsController < Devise::RegistrationsController
#Your Code Here
end