【问题标题】:Rails 4 API JSON: drying up the response objectRails 4 API JSON:干燥响应对象
【发布时间】:2014-12-23 16:03:51
【问题描述】:

我正在创建一个 API,它使用 JSON 与外部视图应用程序 (Angular) 来回通信。在很多 API 操作中,我返回的 JSON 响应与下面的错误 99% 相同:

  # controller
  def create
    @record = Record.new(record_params)
    if @record.save
      @record
    else
      render json: {
        error: {
          type: "invalid_request",
          message: "Could not create record. Params: #{record_params}",
          errors: @record.errors.messages
        }
      }, status: 404
    end
  end

有没有方便的方法来干燥它?我特别问是因为我知道某些方法(例如 render)仅适用于控制器类,因为它们是继承的。

我正在考虑类似以下的事情:

render json: API::ErrorObject.call(@record, record_params), status: 404

在那个类中它会是:

class API::ErrorObject
  self.call(object, params)
    {
      error: {
        type: "invalid_request",
        message: "Could not create record. Params: #{record_params}",
        errors: object.errors.messages
      }       
    }
  end
end

我认为这可行,但有没有更简洁的方法来抽象出一些这种行为? API 相当大,因此有 30 多个地方可以存放非常相似的代码。我知道总有一天有人会请求对 API 响应进行补充,而有一个地方来更新这将比 30 好得多...

【问题讨论】:

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


    【解决方案1】:

    到目前为止,我发现的最佳解决方案是使用 Jbuilder 之类的工具将 V 带回 MVC。

    使用这个你可以真正干掉你的代码,就像你在 ERB 中使用部分一样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-26
      • 2012-02-05
      相关资源
      最近更新 更多