Rails,为特定模型设计自定义视图
Rails, Devise custom views for specific models
我有模型 Partner
及其控制器和许多视图。然后我将 Devise
添加到该模型中。
我想自定义注册和登录的视图,所以我做了这个命令:
rails generate devise:views partners
它在 views/partners
文件夹中为我生成了新视图。我打开了 partners/registrations/new.html.erb
文件并编辑了这个表格。当我打开 sign up
页面时,它显示的是旧表格,而不是我编辑过的表格。为什么?
更新
我只需要在 config/initializers/devise.rb
文件中添加 config.scoped_views = true
。
我为我的表单添加了新字段,但它们没有持久存在。在 Devise 站点中,他们说在我的应用程序控制器中使用 configure_permitted_parameters
让设计接受新表单元素的值。
但是,我将有多个由设计创建的模型,它们有自己的字段。他们说,那需要创造Sanitizer
类。我必须在哪里创建这个 Sanitizer
类?
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
修改他们对应的view
而您对应的控制器是
#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
devise.rb
中有一项名为 scoped_views
的设置,默认情况下处于关闭状态,您必须启用它以确保您在应用中使用自定义视图而不是默认视图设计观点。
我有模型 Partner
及其控制器和许多视图。然后我将 Devise
添加到该模型中。
我想自定义注册和登录的视图,所以我做了这个命令:
rails generate devise:views partners
它在 views/partners
文件夹中为我生成了新视图。我打开了 partners/registrations/new.html.erb
文件并编辑了这个表格。当我打开 sign up
页面时,它显示的是旧表格,而不是我编辑过的表格。为什么?
更新
我只需要在 config/initializers/devise.rb
文件中添加 config.scoped_views = true
。
我为我的表单添加了新字段,但它们没有持久存在。在 Devise 站点中,他们说在我的应用程序控制器中使用 configure_permitted_parameters
让设计接受新表单元素的值。
但是,我将有多个由设计创建的模型,它们有自己的字段。他们说,那需要创造Sanitizer
类。我必须在哪里创建这个 Sanitizer
类?
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
devise.rb
中有一项名为 scoped_views
的设置,默认情况下处于关闭状态,您必须启用它以确保您在应用中使用自定义视图而不是默认视图设计观点。