Rails RABL if else语句

时间:2013-04-12 21:58:31

标签: ruby-on-rails rabl

我在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

UPDATE1

我也试过

if @expense.matitem_id != nil

2 个答案:

答案 0 :(得分:9)

如果matitem_id@expense对象的属性,则应通过root_object帮助器以条件形式引用它:

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

此外,!= nil可能是多余的。

答案 1 :(得分:1)

这一行:

if :matitem_id != nil

字面上将符号:matitem_idnil进行比较。这绝不是真的。您需要做的是比较子对象的ID。您可以将对象传递到块中:

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