我想使用不同的布局文件登录设计。
我尝试过静态页面,但收到错误undefined local variable or method 'resource'
。
目前,在我的应用程序控制器中,我有:
layout :layout_by_resource
protected
def layout_by_resource
if devise_controller?
"signin"
else
"application"
end
end
这个问题是每个设计视图都使用布局文件'login',这是不好的,因为我目前使用设计的帐户页面的编辑注册表单。
有人知道使用不同布局文件登录设计的最佳方法吗?
答案 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
这将生成设计视图文件供您自定义布局。