编辑购物车中的数量

时间:2013-01-20 00:15:26

标签: ruby-on-rails ruby

所以这是关于更新购物车数量的另一篇文章!我能找到的任何一个似乎都已经过时了,所以如果这看起来很重要,我会道歉。

但是我正在使用Rails第4版的书进行敏捷Web开发,并且他们非常友好地将编辑量作为“挑战”并且没有显示答案:D。现在,当我试图让它工作时,我遇到了麻烦。

在我的观看/ 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表单的事实有关吗?

2 个答案:

答案 0 :(得分:1)

你检查29和35是你的id还是其他什么?尝试检查您的数据库中的LineItems,以及您的控制器如何?和

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

你试图以ajax方式更新它还是?更新数量时,是否应该使用ajax,如果没有错的话(这本书被要求以这种方式做对吗?)

答案 1 :(得分: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

对于遇到问题的人!