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

以及执行以下操作的创建操作:

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

即使之前的过滤器跳闸,它仍然会尝试渲染导致错误的模板。为了让它返回正确的错误和状态代码而不呈现模板,我缺少什么?

4

2 回答 2

0

您有多个 response_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 回答