如果yield是布局中的闭包,那么布局是如何呈现的?

时间:2013-09-13 06:49:24

标签: ruby-on-rails ruby closures

在Rails中,如果yield是布局中的闭包,那么控制器如何指示要渲染的布局?

layout :render => "myLayout"

2 个答案:

答案 0 :(得分:0)

控制器中的layout命令也可以接受符号,该符号将其链接到方法。像这样:

class ApplicationController < ActionController::Base

  layout :layout_by_resource

  protected

  def layout_by_resource
    if devise_controller? && resource_name == :admin_user
      "devise_admin"
    else
      "application"
    end
  end

end

因此,您可以使用它来从控制器中切换出要使用的布局。

答案 1 :(得分:0)

如果要为控制器设置布局

class YourController < ApplicationController
  before_filter :set_layout

  protected

  def set_layout
    render :layout => 'Your-layout'
  end
end