我有以下表格更新购物车的数量。
<% form_for(:cart, @cart.items, :url => { :action => "update_cart" }) do |f| %>
<table>
<tr>
<th>Item</th>
<th>Quantity</th>
<th>Price</th>
</tr>
<% for item in @cart.items %>
<% f.fields_for item, :index => item.id do |item_form| %>
<tr>
<td><%=h item.title %></td>
<td><%=item_form.text_field :quantity, :size => 2 %>
<span>@ <%=h number_to_currency(item.item_price) %></span></td>
<td><%=h number_to_currency(item.line_price) %></td>
</tr>
<% end %>
<% end %>
<tr>
<td colspan="2">Total:</td>
<td><%=h number_to_currency(@cart.total_price) %></td>
</tr>
</table>
<%=submit_tag 'Update Cart' %>
<% end %>
def update_cart
@cart = find_cart
@cart.items.each do |item|
quantity = params[:cart][:cart_item][item.id.to_s][:quantity].to_i
@cart.update_quantity_for(item, quantity)
end
redirect_to :action => 'cart'
end
我没有用于购物车或购物车项目的REST接口控制器。有没有更好的方法来处理这种深参数数据结构?表达式
params[:cart][:cart_item][item.id.to_s][:quantity].to_i
我觉得对无效的表单数据很危险。