Rails,为特定模型设计自定义视图

时间:2015-03-23 09:36:02

标签: ruby-on-rails ruby model-view-controller devise

我有模型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类?

2 个答案:

答案 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.erbviews/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