【问题标题】:Rails, Devise custom views for specific modelsRails,为特定模型设计自定义视图
【发布时间】:2015-05-26 05:56:37
【问题描述】:

我有模型Partner 及其控制器和很多视图。然后我在这个模型中添加了Devise

我想自定义注册和登录的视图,所以我做了这个命令:

rails generate devise:views partners

它在views/partners 文件夹中为我生成了新视图。我打开了partners/registrations/new.html.erb 文件并编辑了这个表格。当我打开 sign up 页面时,它会显示旧表单而不是我编辑的。为什么?

更新

我只需要在我的config/initializers/devise.rb 文件中添加config.scoped_views = true

我为我的表单添加了新字段,但它们并没有持续存在。在设计站点中,他们说在我的应用程序控制器中使用configure_permitted_parameters 来使设计接受新表单元素的值。

但是,我将有多个由 devise 创建的模型,它们有自己的字段。他们说,这需要创建Sanitizer 类。我必须在哪里创建这个Sanitizer 类?

【问题讨论】:

  • 你改变路线了吗?
  • 检查你的路线,也不要忘记重启你的服务器
  • 路线?什么路线?
  • congif/routes.rb 下你放了devise_for :partners 吗?
  • 是的,我已经放了这条线。我需要添加更多内容吗?

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


【解决方案1】:

devise.rb 中有一个名为 scoped_views 的设置默认关闭,您必须启用它以确保您在应用中使用自定义视图而不是默认设计视图。

【讨论】:

    【解决方案2】:

    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
    

    【讨论】:

    • 我有多个设计模型,而且还会有更多。当我尝试注册为Partner 时,我怎样才能做到这一点,它会显示我的观点?
    • 我找到了另一种方法,更简单。我只需要在config/initializers/devise.rb 文件中添加config.scoped_views = true
    • ofc config.scoped_views 是第一步。您可以在 Lib 文件夹中定义 Sanitizer 类。
    • 我建议您参考https://github.com/plataformatec/devise 了解如何完全配置您的设备。它包含完整的说明
    猜你喜欢
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2015-10-28
    • 1970-01-01
    相关资源
    最近更新 更多