<% (0..8).each do |i| %>
<tr class="<%= (i % 2 == 0) ? "even" : "odd" %>">
<td>data</td>
<td>4*******6767</td>
<td class="payment"><a href="#">Download Receipt</a></td>
<td>USD $30</td>
</tr>
<% end %>
我有上面的这种循环 先循环出来框架 也就是 循环出来了 9 个 tr 假如我有 3 条数据 那么我如何在这个里面插入这 3 条 比如数据是 current_user.subscriptions 我如何读出其中的每一条。 如下图 如何在我循环出来的这个表格里面套数据
建议使用 partial view,可参考 http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-collections
#6 楼 @luliangshu 你就直接在 each 中套 each 不就好了 但是这样 9 个 tr 就都是这 3 个数据 不知道这是不是你想要的?
#17 楼 @luliangshu
current_user.subscriptions.fill(Subscriptions.new, current_user.subscriptions.length, 9-current_user.subscriptions.length)[0..8].each do |subscription|
循环的内容是你的 tr 模板 这样的结果是你有 n 个有数据的 tr 和 9-n 个没有数据的 new 的 tr
@luliangshu 有个直接的办法,手写的,不一定全对,表达一下思路。
# in controller
@subscriptions = Array.new(9, nil)
current_user.subscriptions.each_index {|o,i| @subscriptions[i] = o }
# in view
<%= render partial: "subscription", collection: @subscriptions, as: :subscription %>