5

Rails アプリで RABL を使用して、REST 経由でデータにアクセスしています。if ステートメント以外は機能しています。

次のエラーが表示されます。

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

更新1

私も試しました

if @expense.matitem_id != nil
4

2 に答える 2

9

matitem_idがオブジェクトの属性である場合は、次のようにヘルパー@expenseを介して条件付きで参照する必要があります。root_object

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

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

于 2013-04-12T22:56:32.087 に答える
1

この行:

if :matitem_id != nil

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

child :matitem do |matitem|
  if matitem.id != nil
    ...
end
于 2013-04-12T22:04:53.273 に答える