我如何有条件地禁用Ramaze布局?

时间:2012-05-22 21:31:27

标签: ruby layout ramaze

如果请求恰好是ajax请求(即request.xhr?== true),我想通过禁用/拒绝布局来响应控制器方法。

以下似乎不起作用 - 它仍然会返回布局

class FooController < Ramaze::Controller
  layout :default

  def bar
    if request.xhr?
      layout nil
      "return something here"      #just return this string without the layout
    else
      ... #return with full layout
   end
end

1 个答案:

答案 0 :(得分:1)

您可以通过调用respond!来绕过视图和布局渲染:

respond!(body, status, 'Content-Type' => 'whatever/foo')

如果body是你的(json?)正文,请说明HTTP响应代码。 然后,您可以提供带有返回标头的哈希值。

但是,您可能对provides感兴趣,如果它们以“.json”结束,它们可以以不同方式处理请求。有关详细信息,请参阅http://ramaze.net/documentation/file.views.html#View_Mapping