我试图在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
任何人都知道发生了什么?
答案 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