6

Rails 3 は現在、HEAD リクエストを一致する GET ルートにルーティングします。頭あ​​る?メソッドを呼び出しますが、false を返し、要求は get 要求のように機能します。リクエストが HEAD リクエストかどうかを検出できますか?

理由: HEAD リクエストは get とまったく同じヘッダーを返さなければならないことがわかったので、Rails は完全な GET を実行してから本体を削除したいと考えています。ただし、GET と同じ DB 呼び出しなどを発行することなく、この要求に準拠できます。これは理にかなっていますか?

4

3 に答える 3

2

request.head を使用できますか? HEAD リクエストかどうかを調べるメソッド:

http://api.rubyonrails.org/classes/ActionDispatch/Request.html#method-i-head-3F

そうであると判断したら、通常のレンダリングの代わりにコントローラーの head() メソッドを使用することもできます。

http://guides.rubyonrails.org/layouts_and_rendering.html#using-head-to-build-header-only-responses

だから私は単にrequest.headをチェックしますか? データベース活動に煩わされる前に。次に使用します

head :ok, :custom_header => 'value'
于 2012-05-03T20:53:46.313 に答える
1
def index
  if request.head?
    head :created
  else
    Rails.logger.info "Derp #{request.method}"
  end
end

うーん。上記のコントローラー メソッドは、Ruby v1.9.3-p194 および Rails v3.2.3 で期待どおりに機能します。HEAD リクエストの場合は 201 の応答本文なし、GET の場合は 200 です。

于 2012-05-04T17:33:33.730 に答える