我有一个简短的问题可以帮助我理解 Rails 部分。我是 RoR 的新手,刚刚使用 Rails 进行敏捷 Web 开发。如果你有同一本书,我在迭代 F1。
当我不使用部分时,购物车中的 show.html.erb 如下所示:
<% if notice %>
<p id="notice"><%= notice %></p>
<% end %>
<!-- START_HIGHLIGHT -->
<h2>Your Cart</h2>
<table>
<!-- END_HIGHLIGHT -->
<% @cart.line_items.each do |item| %>
<!-- START_HIGHLIGHT -->
<tr>
<td><%= item.quantity %>×</td>
<td><%= item.product.title %></td>
<td class="item_price"><%= number_to_currency(item.total_price) %></td>
</tr>
<!-- END_HIGHLIGHT -->
<% end %>
<!-- START_HIGHLIGHT -->
<tr class="total_line">
<td colspan="2">Total</td>
<td class="total_cell"><%= number_to_currency(@cart.total_price) %></td>
</tr>
<!-- END_HIGHLIGHT -->
<!-- START_HIGHLIGHT -->
</table>
<!-- END_HIGHLIGHT -->
<%= button_to 'Empty cart', @cart, method: :delete,
data: { confirm: 'Are you sure?' } %>
然后,当我开始使用 partials 时,我创建了一个名为 _cart.html.erb 的类并将其放入其中:
<h2>Your Cart</h2>
<table>
<%= render(cart.line_items) %>
<tr class="total_line">
<td colspan="2">Total</td>
<td class="total_cell"><%= number_to_currency(cart.total_price) %></td>
</tr>
</table>
<%= button_to 'Empty cart', cart, method: :delete, data: { confirm: 'Are you sure?' } %>
并将我的 show.html.erb 修改为:
<% if notice %>
<p id="notice"><%= notice %></p>
<% end %>
<%= render(@cart) %>
所以,我现在的困惑是,当我没有部分时,为什么我必须使用 @cart.something 。据我了解,我使用的是名为 carts.rb 的模型。那么,当我创建一个部分时,我只是简单地使用购物车而不是 @cart 并且部分仍在使用模型?
但是为什么我使用渲染(@cart)?那么这个命令是否只使用我的部分 _cart.html.erb?任何人都可以帮助我完成对它的理解吗?可能是这样,但我现在有点困惑:)