【问题标题】:RABL fails for empty queryRABL 因空查询失败
【发布时间】:2014-05-04 07:19:42
【问题描述】:

我有一个数据表,它通过查询接收数据,然后使用 RABL 进行格式化。 在我的搜索找不到任何行之前,这一切都很好。 然后我只收到 ....processing 消息并且没有更新。 我真的被 RABL 弄糊涂了。有没有办法查看它在做什么?

这是我的 data.rabl 文件

object false

node(:iTotalRecords){@iTotalRecords}
node(:iTotalDisplayRecords){@iTotalDisplayRecords}

child(@aaData, :object_root => false)  do 
  attributes :school_name  => "1",
         :student_name => "3",
         :paid         => "4",
         :short_name   => "5",
         :emailed      => "6",
         :reconciled   => "9"
  node("6") do |p|
    if p.emailed == 0
      'false'
    else
      'true'
    end
  end
  node("0") do |p|
    p.created_at.to_date
  end
  node("2") do |p|
     schedule = p.enrollment.schedule
     link_to(p.klass_name, schedule_path(schedule))
  end
  node("3") do |p|
     link_to(p.enrollment.student.name, student_path(p.enrollment.student_id))
  end
  node("7") do |p|
     p.enrollment.rate
  end
  node("8") do |p|
     p.enrollment.paid
  end
  node("10") do |p|
      link_to("Edit", edit_payment_path(p), :class => 'btn btn-info btn-mini')
  end 
end

【问题讨论】:

  • 好的,我通过添加: child :payments => :payments before child(@aaData, :object_root => false) do 这确保即使 do 循环永远不会执行,因为 @ aaData 数组为空,它仍将包含一个值:payments。

标签: ruby-on-rails json rabl


【解决方案1】:

我需要做的是确保 json 包含一个名为 :payments 的字段。 如果没有数据,则不会执行子循环,因此 RABL 没有理由生成 :payments 字段。

我发现您可以通过创建别名来强制执行此操作。 所以我添加了代码:

 child :payments => :payments

就在行前

child(@aaData, :object_root => false)  do 

现在效果很好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    相关资源
    最近更新 更多