设计控制器的布局不同,形式错误时出现问题

时间:2011-04-19 09:47:59

标签: ruby-on-rails views devise

我在application_controller中为我的登录和注册视图分配了不同的布局,如下所示:

  layout :layout_by_resource

  def layout_by_resource
    if devise_controller? && resource_name == :user && action_name == 'new'
      "login"
    else
      "application"
    end
  end

进入登录或注册信息时,它可以完美运行。但是在注册时存在验证错误,标准应用程序布局会被渲染。我做错了什么建议?

谢谢!

2 个答案:

答案 0 :(得分:7)

  def layout_by_resource
    devise_controller? ? 'login' : 'application'
  end

答案 1 :(得分:4)

好的,自己修理;)必须检查创建操作...

  layout :layout_by_resource

  protected

  def layout_by_resource
    if controller_name == 'registrations' && action_name == 'new'
      'login'
    elsif controller_name == 'registrations' && action_name == 'create'
      'login'
    elsif controller_name == 'sessions' && action_name == 'new'
      'login'
    else
      'application'
    end
  end