2016-07-11 21 views
1

Ich weiß, dass Sie explizit Felder wie so, aber Gibt es eine Möglichkeit, Attribute in einer JBuilder-Rails-Vorlage auszublenden?

json.(model, :field_one, :field_two, :field_three) 

Liste kann, ist es etwas ähnlich der folgenden,

json.(model, except: :field_two) 

welche ausgeben würde einer alle Modell Felder außer rief?

+1

Haben Sie versucht, 'json.merge funktioniert! model.attributes.except ("field_one", "field_two") '? – mmichael

+0

@michael, das hat funktioniert! Scheint so, als gäbe es einen einfacheren Weg ... – sambecker

Antwort

2

Versuchen json.merge! model.attributes.except("field_one", "field_two")

1

Ich hatte so etwas getan. Erhalten Sie ein Array aller gewünschten Attribute des Modells

model.attributes.keys.map { |key| key.to_sym } - [:field_one, :field_two] 

, die wie

geschrieben werden können
model.attributes.keys.map(&:to_sym) - [:field_one, :field_two] 

das Array Dann vollzuspritzen während in jbuilder vorbei

json.(model, *(model.attributes.keys.map(&:to_sym) - [:field_one, :field_two])) 
0

Für nicht Active Objekte dieses ähnliches Muster (Rails 4)

json.merge! @some_object.as_json.except("not_this_one")