Ich versuche, einen Artikel aus dem Produkt zeigen Seite in einen Einkaufswagen hinzufügen. Wenn die Schaltfläche "In den Warenkorb" gedrückt wird, wird ein Bestellartikel in der Datenbank erstellt und an den Einkaufswagen gesendet. Ich habe das Add auf Schaltfläche Warenkorb aus der Index-Seite arbeiten, aber wenn ich es aus der Show Seite versuchen, bekomme ich folgende Fehler und es wird nichts in den Warenkorb gelegt:Keine Route stimmt Fehler beim Hinzufügen von Artikel zum Warenkorb von zeigen Seite Schienen
ActionController::RoutingError (No route matches [POST] "/products/5"):
actionpack (4.2.5) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
web-console (2.3.0) lib/web_console/middleware.rb:20:in `block in call'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `catch'
web-console (2.3.0) lib/web_console/middleware.rb:18:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
railties (4.2.5) lib/rails/rack/logger.rb:38:in `call_app'
railties (4.2.5) lib/rails/rack/logger.rb:20:in `block in call'
activesupport (4.2.5) lib/active_support/tagged_logging.rb:68:in `block in tagged'
activesupport (4.2.5) lib/active_support/tagged_logging.rb:26:in `tagged'
activesupport (4.2.5) lib/active_support/tagged_logging.rb:68:in `tagged'
railties (4.2.5) lib/rails/rack/logger.rb:20:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/request_id.rb:21:in `call'
rack (1.6.4) lib/rack/methodoverride.rb:22:in `call'
rack (1.6.4) lib/rack/runtime.rb:18:in `call'
activesupport (4.2.5) lib/active_support/cache/strategy/local_cache_middleware.rb:28:in `call'
rack (1.6.4) lib/rack/lock.rb:17:in `call'
actionpack (4.2.5) lib/action_dispatch/middleware/static.rb:116:in `call'
rack (1.6.4) lib/rack/sendfile.rb:113:in `call'
railties (4.2.5) lib/rails/engine.rb:518:in `call'
railties (4.2.5) lib/rails/application.rb:165:in `call'
rack (1.6.4) lib/rack/lock.rb:17:in `call'
rack (1.6.4) lib/rack/content_length.rb:15:in `call'
rack (1.6.4) lib/rack/handler/webrick.rb:88:in `service'
/usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/webrick/httpserver.rb:140:in `service'
/usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/webrick/httpserver.rb:96:in `run'
/usr/local/rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/webrick/server.rb:296:in `block in start_thread'
Produkt/show Seite:
<div class="col-xs-4">
<%= form_for '/order_item', remote: true do |f| %>
<h4 class="text-right">Unit Price: <span style="color: green"><%= number_to_currency @product.price %></span></h4>
<div class="input-group">
<%= f.number_field :quantity, value: 1, class: "form-control", min: 1 %>
<div class="input-group-btn">
<%= f.hidden_field :product_id, value: @product.id %>
<%= f.submit "Add to Cart", class: "btn btn-primary" %>
</div>
</div>
<% end %>
</div>
order_items/create.js.erb
<% if @order.errors.any? || @order_item.errors.any? %>
alert("not valid.")
<% else %>
$(".cart-text").html("<%= escape_javascript(render 'layouts/cart_text') %>")
<% end %>
Layouts/cart_text.html.erb
<%= link_to "#{current_order.order_items.size} Items in Cart (#{number_to_currency current_order.subtotal})", cart_path, class: "btn btn-link" %>
Karren/show.html.erb
<div class="shopping-cart">
<%= render "shopping_cart" %>
</div>
Karren/_shopping_cart.html.erb
<% if [email protected]_item.nil? && @order_item.errors.any? %>
<div class="alert alert-danger">
<ul>
<% @order_item.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<% if @order_items.size == 0 %>
<p class="text-center">
There are no items in your shopping cart. Please <%= link_to "go back", root_path %> and add some items to your cart.
</p>
<% else %>
<% @order_items.each do |order_item| %>
<%= render 'carts/cart_row', product: order_item.product, order_item: order_item, show_total: true %>
<% end %>
<% end %>
carts_controller.rb
class CartsController < ApplicationController
def show
@order_items = current_order.order_items
end
end
routes.rb
resources :products
resource :cart, only: [:show]
resources :order_items, only: [:create, :update, :destroy]
Das hat funktioniert, danke! – Kris
Cool, vergessen Sie nicht, meine Antwort zu validieren;) –