0

所以这是另一篇关于更新购物车数量的帖子!我能找到的任何一个似乎都已经过时了,所以如果这似乎是重复的,我深表歉意。

但是我正在关注 Agile Web Development with Rails 第 4 版一书,他们非常友好地将编辑数量作为“挑战”而不给出答案:D。现在,当我试图让它工作时,我遇到了麻烦。

在我的views/cart/show.html.erb中显示我有下表

<table>
    <tr>
        <th>Quantity</th>
        <th>Product Name</th>
        <th>Size</th>
        <th>Price</th>
    </tr>
<% @cart.line_items.each do |item| %>
    <tr>
        <td>
            <%= form_for 'item', :url => {:controller => 'line_items', :action => 'update', id: item} do |f| %>
                <div class="field">
                    <%= f.number_field :qty, :value => item.qty %>
                    <%= submit_tag "Update" %>
                </div>
            <% end %>
        </td>
        <td><%= item.product.name %></td>
        <td><%= item.size %></td>
        <td><%= number_to_currency(item.total_price) %></td>
    </tr>
<% end %>
    <tr>
        <td colspan="3">Total Price</td>
        <td><%= number_to_currency(@cart.total_price) %></td>
    </tr>
</table>

然而,当我点击更新时,我得到

未知动作

找不到 LineItemsController 的操作“29”

或者

未知动作

找不到 LineItemsController 的操作“35”

即使我完全取出 id 字段。我可以处理控制器端的更新功能并使其正确更新 - 我想自己解决这个问题,但我无法弄清楚是什么可能会生成这些数字操作以及如何修复它。简而言之,是什么产生了这个错误,我该如何解决?这可能与我在购物车视图中有一个 line_item 表单有关吗?

4

2 回答 2

1

你检查 29 和 35 是你的 id 还是别的什么?尝试检查您的数据库中的 LineItems ,以及您的控制器的外观?和

<%= form_for 'item', :url => {:controller => 'line_items', :action => 'update', id: item} do |f| %>

您试图以 ajax 方式更新它还是?更新数量的时候,如果没记错的话应该是用ajax吧(书上要求是这样的吧?)

于 2013-01-20T01:47:30.170 回答
1

所以我让它工作了——我所做的是我像这样调整了表单标题

  <%= form_for :item, :url => line_items_update_path(id: item.id) do |f| %>

我将以下行添加到我的 routes.rb

  get "line_items/update"

并在我的 line_items_controller 中添加了一行

  def update
    @line_item = LineItem.find(params[:id])
    @line_item.qty = params[:item][:qty] #added this line here

对于那些有问题的人!

于 2013-01-20T02:35:16.283 回答