我对Rails相当陌生。我正在尝试构建一个小型应用程序。我有四个模型订单,房间,项目和库存。
我想向用户显示一个项目列表(已存在于数据库中)。用户可以选择从该列表中选择项目和数量。完成选择后,所选项目应保存到库存表中。
库存表有item_id、order_id和quantity。
继续后,它应该显示另一个房间的项目,依此类推,直到所有房间都完成为止。
在这一点上,我陷入了如何前进的困境。
我上面页面的视图文件看起来像这个
<div class="row">
<h6>Living Room</h6>
</div>
<% @items.each do |item| %>
<p "name1"><%= item.name.capitalize %> </p>
<% end %>
<a href="#" >Next Room</a>
是否有任何轨道方法可以识别所有选定的项目以及数量并同时创建所有记录?
创建一个项目数组将是一个很好的解决方案:
<% @items.each do |item| %>
...
= text_field_tag "item[#{item.id}]", value: 0
...
<% end %>
然后在控制器动作:
def update
params[:item].each do |item_id, quantity|
next if quantity == 0
inventory = Inventory.find_or_initialize_by(item_id: item_id, order_id: current_order.id)
inventory.quantity = quantity
inventory.save
end
end
我不太确定从哪里获得订单id,所以我假设您有一个current_order
方法。