Jim*_*ker 22 ruby-on-rails active-model-serializers
我知道这个版本还没有正式发布但我今天检查了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
Run Code Online (Sandbox Code Playgroud)
但这在新版本中是不可取的.解决这个问题的最佳方法是什么,以便我可以在链接器中保存链接?
编辑:现在我正在做以下事情但很想听听是否有更惯用的方式.
class BaseSerializer < ActiveModel::Serializer
include Rails.application.routes.url_helpers
Run Code Online (Sandbox Code Playgroud)
如果您将此添加到您的ApplicationController甚至可能是生成响应的控制器:
serialization_scope :view_context
然后,您可以使用view_context序列化程序访问URL帮助程序(或任何视图方法).
例: view_context.api_v1_company_brand_path(object.company_id, object.id)
我认为这可能比将所有这些URL帮助程序等包含在序列化程序类中更清晰.
| 归档时间: |
|
| 查看次数: |
2530 次 |
| 最近记录: |