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 に答える