【问题标题】:Active Model Serializers error on creating url attributes with v0.9.3使用 v0.9.3 创建 url 属性时出现 Active Model Serializers 错误
【发布时间】:2015-11-09 18:38:42
【问题描述】:

我正在尝试在 AMS 中做一些超级简单的事情,我为如下对象生成 url 属性:

class DeckSerializer < ActiveModel::Serializer
  attributes :id, :title, :description, :url

  has_one :user
  has_many :cards

  def url
    deck_url(object)
  end
end

但是,我收到以下错误:

ArgumentError:缺少要链接的主机!请提供 :host 参数,设置 default_url_options[:host],或设置 :only_path 为 true

我目前使用的是 Rails 4.2.0 和 AMS 0.9.3

有人知道怎么回事吗?

【问题讨论】:

    标签: ruby-on-rails active-model-serializers rails-api


    【解决方案1】:

    这是解决此问题的 DIY 方法。在模型上创建一个字段来存储 url。然后在保存对象后,使用手动生成的 url 更新它。 这是我解决它的方法。

    if @questionsolution.save
    generatedurl = 'http://localhost:3000/questionsolutions/' + @questionsolution.id.to_s
            @questionsolution.update(solutionurl: generatedurl)
    end
    

    那么您可以从资源直接获取 url,而无需依赖活动模型序列化程序来为您完成。

    【讨论】:

      【解决方案2】:

      原来这是这里提到的一个已知错误:

      https://github.com/rails-api/active_model_serializers/issues/573

      我将 AMS 版本切换到 0.8.3,一切正常。虽然不是一个完整的解决方案,但它暂时有效。有兴趣听取他人的想法

      【讨论】:

        【解决方案3】:

        您必须将Rails.application.routes.default_url_options[:host] = 'localhost:3000' 放入config/environments/development.rb

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-06-27
          • 1970-01-01
          • 2016-06-08
          • 1970-01-01
          • 2017-05-19
          • 2017-08-17
          • 2022-11-13
          • 1970-01-01
          相关资源
          最近更新 更多