所以我试图根据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。我应该在哪里寻找这个其他渲染?这是问题吗?
答案 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