我正在尝试使用 respond_with 方法使用 rails 制作一个简单的 rest api,但它不想输出任何类型的状态消息
例如,我希望它不仅返回 get 调用的 json,还返回 ok 状态。当发布或删除有效/失败时也是如此。
一些教程建议使用额外的 :status 参数,但它们似乎根本不会影响输出。
def index
@conns = Connection.all
respond_with(@conns, :status => :ok)
end
这会返回与 :status => :ok 不存在时完全相同的内容。
有什么想法吗??
谢谢!
最佳答案
:status => :ok
设置 HTTP header 的状态代码,即它与 :status => 200
相同。如果你想向响应主体添加一些东西,你需要明确地添加它,例如
respond_with({:conns => @conns, :status => :success}.to_json)
编辑
好吧,那是行不通的。如果除了 JSON 之外你不需要响应任何东西,你可以只使用旧的render
:
render :json => { :conns => @conns, :status => :success }
如果您必须使用明亮 Shiny 的新 respond_with
方法来适应多种响应类型,您可以创建一个响应 as_json
的类:
class JsonResponse
def initialize(data,status)
@data = data
@status = status
end
def as_json(options={})
{
:data => @data,
:status => @status
}
end
end
然后这样调用:
@conns = Connection.all
respond_with(JsonResponse.new(@conns,"success"))
关于ruby-on-rails - Rails respond_with 没有输出剩余调用的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4157529/