2017-01-03 4 views
0

Je travaille sur les sérialiseurs. Je souhaite afficher certains travaux avec l'attribut cancelled=true. J'ai essayé render json: @jobs, :only => [:cancelled], mais son affichage seulement les travaux avec l'attribut annulé. Comment puis-je filtrer les tâches? J'ai aussi essayé json: @jobs, :only => [:cancelled =="true"], mais ça ne marche pas. J'ai également essayé le sérialiseur. Ceci est mon sérialiseur:Render json avec une condition dans les rails

module V1 
    module Jobs 
    class CancelledJobSerializer < ActiveModel::Serializer 
     attribute :id, if: :id? 
     attribute :cancelled, if: :cancelled? 
     def cancelled? 
     true if object.cancelled 
     end 
     def id? 
     true if object.cancelled 
     end 
    end 
    end 
end 

et il retourne

{}, 
{}, 
{}, 
{}, 
{}, 
{}, 
{}, 
{}, 
{}, 
{"cancelled":true } 

est-il de toute façon de supprimer ces parenthèses?

Répondre

1

Ajouter un champ à l'emploi

scope :cancelled, -> { where(cancelled: true) } 

modèle Job donc elle peut renvoyer la annulé (annulé) Et puis dans votre contrôleur

@cancelled_jobs = Job.cancelled 
render json: @cancelled_jobs 
+0

Merci beaucoup cela a fonctionné –