我知道这个版本还没有正式发布,但是我今天检查了一下rc3,我注意到我的序列化程序中不能再使用Rails url helper了。在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
发布于 2016-09-20 05:51:07
如果您将此代码添加到ApplicationController
中,甚至可能添加到生成响应的控制器中:
serialization_scope :view_context
然后,您可以在序列化程序中使用view_context
来访问URL helper(或者实际上是任何视图方法)。
示例:view_context.api_v1_company_brand_path(object.company_id, object.id)
我认为这可能比包含所有那些URL助手等更干净……添加到序列化器类中。
发布于 2016-07-23 08:35:13
包括已经被排除的库(就像你所做的那样)肯定是最短的路线(除了修改gem本身,就习语而言)
https://stackoverflow.com/questions/32768046
复制相似问题