i have rails e-commerce app 1 creates order, adds items order.
order belongs user, , have orderitem join table orders , items. user can create order other users.
routes.rb
resources :items resources :users, only: [:show] resources :orders resources :order_items, only: [:create, :update, :destroy] end order#show renders partial has items, button add orderitem order
<%= render partial: 'order_items/new', locals: { user: @user, order: @order} %> here partial view/order_items/_new.html.erb
<h3>add items</h3> <% @items.each |item| %> <div> <%= item.name %> <%= render 'order_items/add', locals: { user: @user, order: @order, item: @item} %> </div> <% end %> then partial order_items/_add.html.erb
<%= form_for [@user, @order, @order.order_items.build] |f| %> <%= f.submit 'add item', class: 'btn' %> <% end %> this creates orderitem, item_id nil. have pass in item_id parameter this:
<%= f.hidden_field :item_id, :value => item.id %> but problem cannot access item in form. what's best way go ?
you can this:
<%= form_for [@user, @order, @order.order_items.build(item_id: @item.id)] |f| %> #.... <% end %> ...or if need see item name (or other attribute)
<%= form_for [@user, @order, @order.order_items.build(item_id: @item.id)] |f| %> <%= f.label @item.name #or whatever attribute need see %> <% end %>
Comments
Post a Comment