使用 v0.9.3 创建 url 属性时出现活动模型序列化程序错误
Active Model Serializers error on creating url attributes with v0.9.3
我正在尝试在 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:缺少主机到 link 到!请提供:host参数,设置default_url_options[:host],或设置:only_path为true
我目前正在使用 Rails 4.2.0 和 AMS 0.9.3
有人知道发生了什么事吗?
原来这是这里提到的一个已知错误:
https://github.com/rails-api/active_model_serializers/issues/573
我将 AMS 版本切换到 0.8.3,一切正常。虽然不是一个完整的解决方案,但它暂时有效。有兴趣听取他人的想法
您必须将 Rails.application.routes.default_url_options[:host] = 'localhost:3000'
放入 config/environments/development.rb
这是解决这个问题的DIY方法。在模型上创建一个字段来存储 url。然后在保存对象后,您可以像这样使用手动生成的 url 更新它。
这是我解决它的方法。
if @questionsolution.save
generatedurl = 'http://localhost:3000/questionsolutions/' + @questionsolution.id.to_s
@questionsolution.update(solutionurl: generatedurl)
end
然后您可以直接从资源中获取 url,而无需依赖活动模型序列化程序为您完成。
我正在尝试在 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:缺少主机到 link 到!请提供:host参数,设置default_url_options[:host],或设置:only_path为true
我目前正在使用 Rails 4.2.0 和 AMS 0.9.3
有人知道发生了什么事吗?
原来这是这里提到的一个已知错误:
https://github.com/rails-api/active_model_serializers/issues/573
我将 AMS 版本切换到 0.8.3,一切正常。虽然不是一个完整的解决方案,但它暂时有效。有兴趣听取他人的想法
您必须将 Rails.application.routes.default_url_options[:host] = 'localhost:3000'
放入 config/environments/development.rb
这是解决这个问题的DIY方法。在模型上创建一个字段来存储 url。然后在保存对象后,您可以像这样使用手动生成的 url 更新它。 这是我解决它的方法。
if @questionsolution.save
generatedurl = 'http://localhost:3000/questionsolutions/' + @questionsolution.id.to_s
@questionsolution.update(solutionurl: generatedurl)
end
然后您可以直接从资源中获取 url,而无需依赖活动模型序列化程序为您完成。