【问题标题】:Multiple Child Models and Nesting RABL -- Works in HTML多个子模型和嵌套 RABL——在 HTML 中工作
【发布时间】:2012-05-01 03:19:47
【问题描述】:

我正在尝试使用 RABL 为以下 index.html.erb 文件构建 JSON 输出:

<% @halls.each do |hall| %>
<%= hall.name.capitalize %><br><br>
<% hall.days.each do |day| %>
    <%= day.date.capitalize %>
    <br><br>    
    <% day.meals.each do |meal| %>
        <%= meal.name.capitalize %><br><br>
        <% meal.foods.each do |food| %>
            <%= food.name %> <br>
        <% end %>
     <br>
    <% end %>
<% end %>
   <% end %>

此时,我已经尝试了一百万种不同的方法,我希望有人可以帮助我为 index.json.rabl 文件生成代码,因为我完全陷入了困境。

【问题讨论】:

    标签: ruby-on-rails json rabl


    【解决方案1】:

    如果你想对子节点进行“深度嵌套”,试试这个:

    collection @halls
    
    # Use a custom node to get capitalized name
    node :name do |hall|
      hall.name.capitalize
    end
    
    # Child list of days
    child :days do
      node :date do |day|
        day.date.capitalize
      end
    
      child :meals do
        node :name do |meal|
          meal.name.capitalize
        end
        child :foods do
          # No need to use custom node because we don't need to do extra processing on the value (i.e capitalization is not required) and 'name' is a simple attribute on the model.
          attribute :name
        end
      end
    end
    

    否则,如果您希望所有子节点都处于同一级别,则不要嵌套 do 块。

    另外,请查看RailsCast on RABL。我花了一段时间才得到的最大概念之一是哪个对象在各种 RABL 块(即子块、节点块等)的“范围”内。RailsCast 在解释对象的范围方面做得很好。

    【讨论】:

      猜你喜欢
      • 2014-06-24
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多