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.erbviews/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 的设置,默认情况下处于关闭状态,您必须启用它以确保您在应用中使用自定义视图而不是默认视图设计观点。