我正在努力寻找能够帮助您的专家。我正在编写一个Ruby 2.0.0p247(Rails 3.2.13)的API与一组控制器,可以调用一个名为send_response,它采用状态和可选参数,并格式化为一个适当的HTTP响应然后通过JSON将其返回给最终用户,然后停止所有执行。 API调用受数据库支持的令牌的保护。Ruby在函数中使用'return false'时不会停止执行
我正在使用render json: response, :status => response['status'] and return false'
但执行似乎继续,无论如何。例如:API调用添加一个日志条目,我使用了一个错误的参数让我得到一个JSON响应,说明错误的参数,但日志条目仍然被添加。
的来源“send_response()调用:
# Make sure the user is using the correct parameters, otherwise kick 'em out
params.each do |key,value|
if params_list.include?(key) == false
send_response 500, data: 'Invalid parameters used!'
end
end
我完全茫然,为什么执行:
def send_response(status, options = {})
source = options[:source] || nil
count = options[:count] || -1
data = options[:data] || nil
id = options[:id] || -1
trigger_id = options[:trigger_id] || -1
response = {}
case status
when 'ok', 200
response['status'] = 200
response['message'] = 'success'
response['count'] = count unless count == -1
response['data'] = data unless data == nil
response['id'] = id unless id == -1
response['trigger_id'] = trigger_id unless trigger_id == -1
when 'bad_request', 400
response['status'] = 400
response['message'] = 'error'
response['data'] = data unless data == nil
when 'unauthorized', 401
response['status'] = 401
response['message'] = 'unauthorized'
response['data'] = data unless data == nil
when 'internal_error', 500
response['status'] = 500
response['message'] = 'error'
response['data'] = data unless data == nil
else
response['status'] = 500
response['message'] = 'error'
response['data'] = 'Invalid send_response() sent.'
end
response['source'] = caller[0][/`.*'/][1..-2] if Rails.env.development?
render json: response, :status => response['status'] and return false
end
这个功能的一个例子我的控制器被称为没有结束,任何帮助将不胜感激指向正确的方向。
在此先感谢!当前方法的
--Jayson
非常感谢你 - 它完美的作品! –