Currently I exploring Ruby on Rails. So I try to save nested array in database but I encountering some problem. The problem is I can take the value from the input boxes but not sure how to loop the data correctly.
The value in my parameter is
#<ActionController::Parameters {"authenticity_token"=>"HrR9-qX2HZrG3Q71smHdcO4s8ke8SwoUzhAZGdTOuVsuAq-RQO7Rp9YIX6j988uj9PTkA-pffvM2IBlKGi0C2w", "supplier"=>#<ActionController::Parameters {"company_id"=>"1", "first_name"=>"aa", "last_name"=>"aa", "username"=>"aa", "email"=>"aa@aa.com", "phone_number"=>"65738290"} permitted: false>, "supplier_item"=>{"item_ids"=>["2", "4"], "location_ids"=>["1", "2"], "supplier_prices"=>["7.8", "45.0"]}, "item_select"=>"1", "location_select"=>"1", "commit"=>"Create Supplier", "controller"=>"suppliers", "action"=>"create"} permitted: false>
What I'm trying to do is I want to loop params[:supplier_item]. Which is the data inside here.
#<ActionController::Parameters {"item_ids"=>["2", "4"], "location_ids"=>["1", "2"], "supplier_prices"=>["7.8", "45.0"]} permitted: false>
So I want to loop the params[:supplier_item] and save into join table called supplier_item. So I try few ways to loop thru the data but I still having some issue.
Do you guys have any opinion or idea how to do this please so share. I attach my code down below. Thank you
@supplier = Supplier.new(supplier_params)
if @supplier.save
params[:supplier_item][:item_ids].each do |item_id|
supplier_prices = params[:supplier_item][:supplier_prices]
location_ids = params[:supplier_item][:location_ids]
supplier_item = SupplierItem.new(item_id: item_id[], supplier_id: @supplier.id, location_id: location_ids[], supplier_price: supplier_prices )
supplier_item.save
end
flash[:success] = "New supplier created"
redirect_to supplier_path(@supplier)
else
render 'new'
end