【问题标题】:Changing devise default layouts更改设计默认布局
【发布时间】:2012-06-20 09:14:54
【问题描述】:

我正在尝试设计以在某些方面显示与默认设置不同的布局模板。

当用户进入登录页面时,我可以使用此功能,但我需要显示不同的布局以进行注册、忘记密码和重置。

这是我的应用程序控制器中的当前代码:

layout :layout

  private
  def layout
    # only turn it off for login pages:
    is_a?(Devise::SessionsController) ? "login" : "application"
    # or turn layout off for every devise controller:
    #devise_controller? && "application"
  end

【问题讨论】:

    标签: ruby-on-rails layout devise


    【解决方案1】:

    如果您将备用布局命名为 devise.html.erb,那么 gem 的控制器自然会使用它,而无需询问。保存一些代码。

    【讨论】:

    【解决方案2】:

    将这行代码添加到您的 application.rb:

    config.to_prepare do
        Devise::SessionsController.layout "your_layout_name"
        Devise::RegistrationsController.layout "your_layout_name"
        Devise::ConfirmationsController.layout "your_layout_name"
        Devise::UnlocksController.layout "your_layout_name"
        Devise::PasswordsController.layout "your_layout_name"
    end
    

    如果您希望所有 Devise 视图具有相同的布局,除了用户正在编辑其数据时,您可以这样:

    config.to_prepare do
      Devise::SessionsController.layout "your_layout_name"
      Devise::RegistrationsController.layout proc{ |controller| user_signed_in? ? "application" : "your_layout_name" }
      Devise::ConfirmationsController.layout "your_layout_name"
      Devise::UnlocksController.layout "your_layout_name"            
      Devise::PasswordsController.layout "your_layout_name"        
    end
    

    有关更多信息,您可以阅读此article

    【讨论】:

    • 上述代码的唯一问题是,当有效的登录用户在那里编辑密码时,registrationscontroller 也会生效
    • 最简单的方法是在 ApplicationController 中定义:github.com/plataformatec/devise/wiki/…
    • 伙计们,我在 application.rb 中执行了此操作,但它会在没有设置布局的情况下继续渲染设计部分(我将 application.haml 设置为我在应用程序其余部分中使用的默认值:views/layouts/ application.haml) 设计::SessionsController.layout "应用"
    【解决方案3】:

    您不需要自己处理布局,只需:

    rails generate devise:views
    

    然后,查看views文件夹下的devise文件夹,你会看到所有需要自定义的表单

    【讨论】:

    • 做到了,但它仍然使用我的应用程序模板,在用户登录之前我不想显示一些信息。它不是这样的视图,而是呈现这些视图的布局内
    • 对我来说,我不必触摸布局,我所做的只是 rails generate devise:views,然后,我很容易自定义生成的视图,它们以默认产量呈现跨度>
    猜你喜欢
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2014-05-26
    • 2011-10-10
    • 2014-07-09
    相关资源
    最近更新 更多