Мое королевство за ответ на этот тупик. Мое приложение выдает ошибки от контроллера, что он не может найти параметр, который я передаю из представления. Я посмотрел больше в консоль и добавил несколько операторов put. Представление передает значения параметров правильно, и оба параметра перечислены в сильных параметрах, но контроллер не может их найти. Вот код и вывод журнала консоли.
Просмотр
<%= form_for @order_item, class: "form-control", remote: false do |f| %>
<div class="artist-event-item">
<div class="row">
<div class="artist-event-item-info col-sm-8">
<h3>Ticket</h3>
<ul class="row">
<li class="col-sm-6">
<span>Venue</span>
<%= product.section.venue.address_street_number %> <%= product.section.venue.address_street_name %>
<span class="location"><%= product.section.venue.address_city %>, <%= product.section.venue.address_state_code %></span>
</li>
<li class="col-sm-6">
<span>Section</span>Section <%= product.section.name%> - <%=product.section.description %>
</li>
</ul>
</div>
<div class="artist-event-item-price col-sm-4">
<span>Ticket Price</span>
<strong><%= number_to_currency(product.price) %>
</strong>
<div class="input-group col-xs-2 center">
<%= f.number_field :quantity, value: 0, min: 0, class: "select.form-group-sm form-control" %>
<%= f.hidden_field :product_id, value: product.id %>
<%= f.button "Add to Cart", data: { remote: true, disable_with: "<i class = 'fa fa-spinner fa-spin'></i> Updating cart..." }, class: "btn btn-add-to-cart" %>
</div>
</div>
</div>
</div>
Контроллер
private
def set_product
puts "quantity is #{params[:quantity]}"
puts "product id is #{params[:product_id]}"
@product = @account.products.find(params[:product_id])
end
def order_item_params
params.require(:order_item).permit(:quantity, :product_id)
end
конец
вывод с консоли рельсов
Started POST "/order_items" for 127.0.0.1 at 2019-01-11 16:42:36 -0400
Processing by OrderItemsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"[FILTERED]", "order_item"=>{"quantity"=>"1", "product_id"=>"13"}, "button"=>""}
Account Load (1.1ms) SELECT "accounts".* FROM "accounts" WHERE "accounts"."subdomain" = $1 LIMIT $2 [["subdomain", "[FILTERED]"], ["LIMIT", 1]]
↳ app/controllers/application_controller.rb:19
CACHE Account Load (0.1ms) SELECT "accounts".* FROM "accounts" WHERE "accounts"."subdomain" = $1 LIMIT $2 [["subdomain", "[FILTERED]"], ["LIMIT", 1]]
↳ app/controllers/application_controller.rb:23`
quantity is
product id is
Completed 404 Not Found in 9ms (ActiveRecord: 1.2ms)
ActiveRecord::RecordNotFound (Couldn't find Product without an ID):
app/controllers/order_items_controller.rb:51:in set_product'