如何在ActiveModel :: Serializer中使用`root_url`?

lan*_*son 5 ruby-on-rails active-model-serializers ruby-on-rails-4

我想通过为数据库添加实体URL来进行编辑。如何在序列化器中使用root_url或使用root_path

像这样:

class TrackSerializer < ActiveModel::Serializer
  attributes :id, :title, :mp3, :ogg
  has_one :promo_album

  def mp3
    root_url + object.mp3
  end

  def ogg
    root_url + object.ogg
  end
end
Run Code Online (Sandbox Code Playgroud)

但这是行不通的。

Loc*_*kyy 5

问题在于,默认情况下,此处不包括Rails.application.routes.url_helpers。如果您更换

root_url 
Run Code Online (Sandbox Code Playgroud)

Rails.application.routes.url_helpers.root_url 
Run Code Online (Sandbox Code Playgroud)

您应该得到想要的结果。


lan*_*son 1

我只是忘记rootroutes.rb. include Rails.application.routes.url_helpers帮助我进入root_path序列化器。