2013-04-12 12 views
5

私はRailsを使ってRailsを使ってデータにアクセスしています。 if文以外は動作しています。Rails RABL if else文

私はこのエラーを取得する:

undefined local variable or method `matitem_id' 

これは私の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

私も

​​
+0

どういう意味ですか? –

+0

申し訳ありません - 質問を変更してエラーを追加しました – Reddirt

答えて

9

matitem_idは、あなたがこのようなroot_objectヘルパーを通じて、条件付きでそれを参照する必要があり@expenseオブジェクトの属性である場合:

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

をまた、!= nilをおそらく冗長です。

+0

答えをありがとう! – Reddirt

1

この行を試してみました:

if :matitem_id != nil

文字通りnilにシンボル:matitem_idを比較しています。これは決して真実ではありません。あなたがする必要があるのは、子オブジェクトのIDを比較することです。あなたはブロックにオブジェクトを渡すことができます:

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

私の質問は間違っていました - 私はそれを更新しました – Reddirt

+0

あなたの経費モデルに 'belongs_to:matitem'がありますか? –