在某些情况下,我需要在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
即使前过滤器跳闸,它仍然会尝试渲染导致错误的模板。我错过了什么来让它返回正确的错误和状态代码而不渲染模板?
答案 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)
我最终完全走了一条不同的路线,所以这个问题不再有效了。