4

所以我试图根据 url 参数更改视图的布局。

到目前为止,我发现我必须在控制器中设置布局。在我的控制器中,我有显示操作:

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

布局“供应商”存在于视图/布局中。我多次得到可怕的渲染。这是我的控制器中其余的显示操作:

 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。我应该在哪里寻找其他渲染?那是问题吗?

4

2 回答 2

8

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

class YourController < ApplicationController
  layout :iframe_layout

  private

  def iframe_layout
    params['iframe'] ? "vendored" : "application"
  end
end
于 2013-10-15T00:50:53.697 回答
3

看到这个答案。对于您的情况:

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

  private

  def set_layout
   self.class.layout ( params['iframe'] == 'true' ? 'vendored' :  'application')
  end
于 2013-10-15T00:29:47.517 回答