Url Helper在ActiveModelSerializer 0.10.0中?

我知道这个版本还没有正式发布,但今天我正在检查rc3,我注意到我不能再在我的序列化器中使用Rails url helpers了。 在0.8.x版本中,我可以执行以下操作:

class BrandSerializer < BaseSerializer attributes :id, :name, :slug, :state attributes :_links def _links { self: api_v1_company_brand_path(object.company_id, object.id), company: api_v1_company_path(object.company_id), products: api_v1_company_brand_products_path(object.company_id, object.id) } end end 

但这在新版本中是不行的。 解决这个问题的最佳方法是什么,以便我可以在链接器中保存链接?

编辑:现在我正在做以下事情但很想听听是否有更惯用的方式。

 class BaseSerializer < ActiveModel::Serializer include Rails.application.routes.url_helpers 

如果将其添加到ApplicationController ,甚至可能添加到生成响应的控制器:

serialization_scope :view_context

然后,您可以使用序列化view_context中的view_context来访问URL帮助程序(或任何视图方法)。

示例: view_context.api_v1_company_brand_path(object.company_id, object.id)

我认为这可能比将所有这些URL帮助程序等包含在序列化程序类中更清晰。

包括被排除在外的图书馆(正如你所做的那样)绝对是最短的路线(在修改gem本身之外,在惯用性方面)