2015-09-24 13 views
21

So che questa versione non è ancora stata rilasciata ufficialmente, ma stavo verificando il rc3 oggi e ho notato che non posso più usare gli helper di Rails url all'interno dei miei serializzatori. Nella versione 0.8.x, potrei fare quanto segue:Url Helpers in ActiveModelSerializer 0.10.0?

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 

Ma questo è un no go nella nuova versione. Qual è il modo migliore per risolvere questo in modo da poter mantenere i miei collegamenti nel mio serializzatore?

Modifica: Per ora sto facendo quanto segue, ma mi piacerebbe sentire se c'è un modo più idiomatico.

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

penso che tu abbia risposto meglio –

risposta

1

compresa la biblioteca, che era stato escluso (come aveva fatto) sarebbe sicuramente essere la via più breve (al di fuori di rivedere la gemma stessa, in termini di idiomacy)

5

Se si aggiunge questo al vostro ApplicationController o anche probabilmente per il controller che genera la risposta:

serialization_scope :view_context

è quindi possibile utilizzare il view_context nel serialiser per accedere ai aiutanti URL (o qualsiasi metodo di visualizzazione davvero).

Esempio: view_context.api_v1_company_brand_path(object.company_id, object.id)

Ho pensato che questo era probabilmente più pulito rispetto compresi tutti quei collaboratori URL ecc ... in classe serialiser.

Problemi correlati