如何在Rails 4上处理可能的参数?

时间:2014-07-23 00:37:45

标签: ruby-on-rails json api ruby-on-rails-4 params

我正在为我的应用做一个API。

目前,您可以按预期调用api/v1/clients并重新获取客户端JSON。您也可以执行api/v1/clients?client_id=1并使用id 1获取Client对象的JSON表示。

这是我的API::V1::ClientsController

class API::V1::ClientsController < ApplicationController

  def index
    if params[:client_id]
      @client = Client.find(params[:client_id])
      render template: 'api/v1/clients/show'
    else
      @clients = Client.all
    end
  end

end

我想要的是,例如,如果您在端点(api/v1/clients?clent_id=1)上有拼写错误,那么应用会返回一个带有错误的JSON对象:

{
  error: {
    error_code: 10,
    error_description: "Bad endpoint"
  }
}

有没有办法在params上发表switch声明来处理可能的情况?

1 个答案:

答案 0 :(得分:0)

我的建议:

在您的控制器中创建一个私有方法,这个方法会检查您的params

  • 如果params为空,则返回false
  • 如果params包含'client_id'且其值为数字,则返回值
  • 否则会引发异常。

然后在动作方法中使用此结果:

  • 如果结果为false,则显示所有结果
  • 否则,它会根据您的私有方法
  • 返回的ID显示记录

至于例外:您使用rescue_from来显示&#34;坏端点&#34; JSON响应