Respond_with模板和状态代码

时间:2012-07-13 19:07:03

标签: ruby-on-rails ruby-on-rails-3 respond-with

在某些情况下,我需要在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

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

2 个答案:

答案 0 :(得分:0)

您有多个respond_with用于创建操作。但我认为更重要的是,您可能需要:

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

我认为这不是问题,但请确保您的控制器中有

class SomeController < ApplicationController
  respond_to :json

答案 1 :(得分:0)

我最终完全走了一条不同的路线,所以这个问题不再有效了。