1

Rails 3 で Respond_with を使用する場合、テンプレートと戻りエラー コードの両方が必要な場合があります。

次のような前フィルターがあります。

def ensure_premium
  respond_with("Must be a premium user!", status: 401, location: nil) unless current_user.is_premium?
end

そして、次のことを行う create アクション:

def create
    @wait_list = @hangout.wait_lists.find_or_create_by(user_id: current_user.id)
    respond_with(@wait_list) do |format|
      format.json {render 'create', status: 201}
    end
end

before フィルターがトリップしても、テンプレートをレンダリングしようとするため、エラーが発生します。正しいエラーとステータス コードを返し、テンプレートをレンダリングしないようにするには、何が欠けていますか?

4

2 に答える 2

0

create アクションに対して複数の Respond_with があります。しかし、もっと批判的に考えると、次のものが必要になる場合があります。

def ensure_premium
  respond_with :json => {:error => "Must be a premium user!", :status => :unauthorized } unless....

これは問題ではないと思いますが、コントローラーにあることを確認してください

class SomeController < ApplicationController
  respond_to :json
于 2012-07-14T02:23:12.307 に答える
0

私は完全に別のルートに行ってしまったので、この質問はもはや有効ではありません.

于 2012-10-05T18:21:31.867 に答える