使用不同的布局文件进行设计登录

时间:2013-02-11 19:18:56

标签: ruby-on-rails ruby devise

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

我尝试过静态页面,但收到错误undefined local variable or method 'resource'

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

layout :layout_by_resource

protected

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

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

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

2 个答案:

答案 0 :(得分:2)

您可能需要做两件事才能使其发挥作用。

1)使用您声明的布局调用创建从Devise控制器继承的单独控制器。 Instructions

2)要自定义视图,甚至可以复制视图。 Instructions可能不是必须的。

关于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" }

答案 1 :(得分:0)

您可以运行此命令

rails generate devise:views

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