如果请求恰好是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
答案 0 :(得分:1)
您可以通过调用respond!
来绕过视图和布局渲染:
respond!(body, status, 'Content-Type' => 'whatever/foo')
如果body是你的(json?)正文,请说明HTTP响应代码。 然后,您可以提供带有返回标头的哈希值。
但是,您可能对provides
感兴趣,如果它们以“.json”结束,它们可以以不同方式处理请求。有关详细信息,请参阅http://ramaze.net/documentation/file.views.html#View_Mapping。