Рельсы 5.1.6
У меня есть приложение, в котором перечислены товары, и вы можете добавить количество товара в заказ.Ну, это идея в любом случае.Итак, сейчас у меня есть форма, чтобы получить количество, а также захватить идентификатор продукта и идентификатор заказа, чтобы связать их через таблицу order_items, которая также содержит количество.Похоже, что форма захватывает order_id и устанавливает его в параметре order_items.В этом случае 5. Порядок с идентификатором 5 существует в БД.Однако когда параметры передаются в .new, он передает пустой идентификатор?Что мне здесь не хватает?
ActiveRecord :: RecordNotFound (Не удалось найти ордер с 'id' =):
Форма ERB
<% @products.each do |product| %>
<div class="col s4">
<h4><%= link_to product.name, product_path(product) %></h4>
<%= form_for @order_item do |f| %>
<%= f.hidden_field :order_id, value: @order.id %>
<%= f.hidden_field :product_id, value: product.id %>
<%= f.number_field :quantity, placeholder: "quantity" %>
<span class="waves-effect waves-light btn"><%= f.submit "Add to order" %></span>
<% end %>
</div>
Класс OrderItemsController
def create
@order = Order.find(params[:id])
@item = @order.order_items.new(item_params)
@order.save
if @order.save
flash[:notice] = "Your order has been added!"
redirect_to orders_path
else
render :new
end
end
def item_params
params.require(:order_item).permit(:quantity, :product_id, :order_id)
end
Терминал
Started POST "/order_items" for 127.0.0.1 at 2018-06-06 16:50:31 -0700
Processing by OrderItemsController#create as JS
Parameters: {"utf8"=>"✓", "order_item"=>{"order_id"=>"5",
"product_id"=>"2", "quantity"=>""}, "commit"=>"Add to order"}
Order Load (0.2ms) SELECT "orders".* FROM "orders" WHERE
"orders"."id" = $1 LIMIT $2 [["id", nil], ["LIMIT", 1]]
Completed 404 Not Found in 2ms (ActiveRecord: 0.2ms)
ActiveRecord::RecordNotFound (Couldn't find Order with 'id'=):
app/controllers/order_items_controller.rb:4:in `create'