【发布时间】:2015-07-15 00:17:18
【问题描述】:
我有一个 Rails 电子商务应用程序,可以在其中创建订单,然后将商品添加到订单中。
Order 属于用户,我有一个 OrderItem,它是 Orders 和 Items 的连接表。任何用户都可以为其他用户创建订单。
routes.rb
resources :items
resources :users, only: [:show] do
resources :orders do
resources :order_items, only: [:create, :update, :destroy]
end
order#show 呈现一个包含所有项目的部分,并带有一个用于将 OrderItem 添加到 Order 的按钮
<%= render partial: 'order_items/new', locals: { user: @user, order: @order} %>
这里是部分视图/order_items/_new.html.erb
<h3>Add Items</h3>
<% @items.each do |item| %>
<div>
<%= item.name %>
<%= render 'order_items/add', locals: { user: @user, order: @order, item: @item} %>
</div>
<% end %>
然后是部分order_items/_add.html.erb
<%= form_for [@user, @order, @order.order_items.build] do |f| %>
<%= f.submit 'Add Item', class: 'btn' %>
<% end %>
这将创建 OrderItem,但 item_id 为 nil。所以我必须像这样传入 item_id 参数:
<%= f.hidden_field :item_id, :value => item.id %>
但问题是我无法访问表单中的项目。最好的方法是什么?
【问题讨论】:
标签: ruby-on-rails forms routes nested