Rails基于URL参数设置布局

时间:2013-10-15 00:10:24

标签: ruby-on-rails controller render url-parameters

所以我试图根据url params改变视图的布局。

到目前为止,我发现我必须在控制器中设置布局。在我的控制器下,我有以下节目动作:

if params['iframe'] == 'true'
  render :layout => 'vendored'
end

布局'vendored'存在于views / layouts中。我多次得到可怕的渲染。以下是我的控制器中其余的show动作:

 def show
    @event = Event.find(params[:id])
    @user = current_user
    @approved_employers = current_user.get_employers_approving_event(@event) if user_signed_in?
    respond_with(@event)

问题是我没有看到另一个渲染。我没有在整个控制器中看到另一个。当然,有一个渲染,因为它渲染我的默认应用程序布局,是否导致问题?我在rails文档中读到了我可以添加的内容

and return

到最后,这应该解决问题,但不知道放在哪里,因为两个渲染不是彼此相邻。我也没有看到任何其他redirect_to。我应该在哪里寻找这个其他渲染?这是问题吗?

2 个答案:

答案 0 :(得分:7)

或者,我认为这更容易理解:

class YourController < ApplicationController
  layout :iframe_layout

  private

  def iframe_layout
    params['iframe'] ? "vendored" : "application"
  end
end

答案 1 :(得分:3)

answer。对于你的情况:

  before_filter :set_layout, :only => [:show]

  private

  def set_layout
   self.class.layout ( params['iframe'] == 'true' ? 'vendored' :  'application')
  end