使用v0.9.3创建url属性时,Active Model Serializers出错

时间:2015-11-09 18:38:43

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

我试图在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

任何人都知道发生了什么?

3 个答案:

答案 0 :(得分:1)

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

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

然后,您可以从资源目录获取url,而无需依赖活动模型序列化程序来为您完成此操作。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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