2

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 %>

この時点で、100 万通りの方法で試しましたが、完全に完全に行き詰っているので、だれかが index.json.rabl ファイルのコードを生成するのを手伝ってくれることを期待していました。

4

1 に答える 1

4

子ノードの「ディープネスト」を実行する場合は、次のことを試してください。

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ブロックをネストしないでください。

また、RABLのRailsCastもチェックしてください。取得するのに時間がかかった最大の概念の1つは、さまざまなRABLブロック(つまり、子ブロック、ノードブロックなど)の「スコープ」内にあるオブジェクトです。RailsCastは、オブジェクトのスコープを説明する適切な仕事をします。

于 2012-05-03T07:25:35.863 に答える