所以这是关于更新购物车数量的另一篇文章!我能找到的任何一个似乎都已经过时了,所以如果这看起来很重要,我会道歉。
但是我正在使用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表单的事实有关吗?
答案 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
对于遇到问题的人!