1

我想使用不同的布局文件来登录设计。

我尝试了一个静态页面,但我得到了错误undefined local variable or method 'resource'

目前,在我的应用程序控制器中,我有:

layout :layout_by_resource

protected

def layout_by_resource
  if devise_controller?
    "signin"
  else
    "application"
  end
end

这样做的问题是每个设计视图都使用布局文件“登录”,这不好,因为我目前使用设计的编辑注册表单作为帐户页面。

有人知道使用不同布局文件登录设计的最佳方法吗?

4

2 回答 2

2

您可能需要做两件事才能完成这项工作。

1)使用您声明的布局调用创建从设计控制器继承的单独控制器。指示

2)进一步自定义视图本身,甚至复制视图。说明可能不是必需的。

关于 1) 控制器:如果您只想自定义登录,则需要以会话控制器为目标。

# app/controllers/sessions_controller.rb
class SessionsController < Devise::SessionsController
  layout :layout_for_action

protected

  def layout_for_action
    if params[:action] == '...' # See what the action is called internally beforehand
      "signin"
    else
      "application"
    end
  end

end

然后,您需要指示 Devise 在以下位置使用您的控制器config/routes.rb

devise_for :admins, :controllers => { :sessions => "sessions" }
于 2013-02-11T19:24:07.557 回答
-1

你可以运行这个命令

rails generate devise:views

这将生成设计视图文件,供您自定义布局。

于 2019-03-25T16:22:59.480 回答