1

如果请求恰好是 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
4

1 回答 1

1

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

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

body 是你的 (json ?) body,状态 HTTP 响应代码。然后,您可以提供带有返回标头的哈希。

但是,您可能会对以不同方式处理请求感兴趣provides,例如,以“.json”结尾。有关这方面的更多信息,请参阅http://ramaze.net/documentation/file.views.html#View_Mapping

于 2012-05-22T21:58:44.513 回答