2013-04-12 12 views
5

Sto utilizzando RABL in un'app Rails per accedere ai dati tramite REST. Funziona tranne la dichiarazione if.Rails RABL if else statement

ottengo questo errore:

undefined local variable or method `matitem_id' 

Questo è il mio codice show.json.rabl:

object @expense 
attributes :id, :unitcost, :quantity, :markup, :exp_date, :created_at, :description, :pcard, :invoice 

child :employee do 
    attributes :id, :maxname 
end 

child :vendor do 
    attributes :id, :vendor_name 
end 

if matitem_id != nil 
    child :matitem do |matitem| 
    attributes :id, :itemnum 
    end 
end 

Update1

Ho anche provato

if @expense.matitem_id != nil 
+0

Cosa vuoi dire che non funziona? –

+0

Scusate - Ho cambiato le domande e ho aggiunto l'errore – Reddirt

risposta

9

Se matitem_id è un attributo dell'oggetto @expense si deve fare riferimento in un condizionale attraverso il root_object helper in questo modo:

if root_object.matitem_id 
    child :matitem do |matitem| 
    attributes :id, :itemnum 
    end 
end 

Inoltre, il != nil è probabilmente ridondante.

+0

Grazie per la risposta! – Reddirt

1

Questa linea :

if :matitem_id != nil

è letteralmente confrontando il simbolo :matitem_id a nil. Questo non sarà MAI vero. Quello che devi fare è confrontare l'ID dell'oggetto figlio. È possibile passare l'oggetto nel blocco:

child :matitem do |matitem| 
    if matitem.id != nil 
    ... 
end 
+0

La mia domanda era sbagliata - L'ho aggiornata – Reddirt

+0

Il modello di spesa ha "appartiene a: matitem"? –