2012-05-22 38 views
1

我想要一個控制器方法來響應,如果請求碰巧是ajax請求(即request.xhr?== true),禁用/拒絕佈局。如何有條件地禁用Ramaze佈局?

下似乎並沒有工作 - 它返回佈局仍然

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

您可以通過調用respond!這樣繞過的視野和佈局渲染:

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

凡身體是你的(json?)正文,狀態HTTP響應代碼。 然後,您可以提供帶返回標題的散列。

但是,您可能會對provides感興趣,例如,如果它們以'.json'結尾,它們可以以不同的方式處理請求。有關詳細信息,請參見http://ramaze.net/documentation/file.views.html#View_Mapping

+0

很好用!謝謝! – rebnoob