我有两个控制器可以修改一个大视图(carts / new.html.erb)。此视图呈现order_item / new.html.erb作为搜索结果传递@products的每个产品。这个功能很好。但是,当我单击为每个产品创建的表单的提交按钮时,这不起作用(仅适用于第一个产品),对于其他产品,它可以正常工作。所以,我看到生成的html和第一个表单标签没有生成。
缺少标记
<form accept-charset="UTF-8" action="/order_items" class="new_order_item" data-remote="true" id="new_order_item" method="post"></form>
谢谢!
推车/ new.html.erb
<h1>Ordenes</h1>
<%= form_tag orders_path, :method => 'get', :id => "products_search" do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Buscar", :name => nil %>
</p>
<div id="products">
<table class="table">
<tr>
<th>Código</th>
<th>Nombre</th>
<th>Precio Compra</th>
<th>Precio Venta</th>
<th>Cantidad</th>
<th></th>
</tr>
<%= will_paginate @products%>
<div id="found_products"><%= render 'found_products' %></div>
<% end %>
</table>
</div>
<% end %>
<div>
<h2>Orden actual</h2>
<div id="shopping_cart">
<%= render "shopping_cart", :locals => { :order_items => @order_items }%>
</div>
推车/ _found_products.html.erb
<% @products.each do |product| %>
<%= render template: "order_items/new", :locals => { :product => product } %>
<% end %>
ORDER_ITEMS / new.html.erb
<%= form_for OrderItem.new, :url => { :action => "create",:controller=>"order_items" }, method: :post, remote: true do |f| %>
<tr>
<td><%= product.code %></td>
<td><%= product.name %></td>
<td><%= product.buy_price %></td>
<td><%= product.sell_price %></td>
<td><%= f.number_field :quantity, class: "form-control width: 50%", min: 0 %></td>
<%= f.hidden_field :product_id, value: product.id %>
<td><%= f.submit "Agregar a la orden", class: "btn btn-primary" %></td>
</tr>
<% end %>
ORDER_ITEMS / create.js.erb
$("#shopping_cart").html("<%=escape_javascript(render partial: 'carts/shopping_cart', locals: { order_items: @order_items, order: @order } ) %>");
Order_items_controller.erb
class OrderItemsController < ApplicationController
before_filter :signed_in_user
def new
@order = current_order
@order_item = @order.order_items.new
end
def create
@order = current_order
@order_item = @order.order_items.new(order_item_params)
respond_to do |format|
if @order.save
format.html {redirect_to orders_path, notice: "Item ingresado"}
format.js {}
session[:order_id] = @order.id
#format.json { render json: @order, status: :created, location: @order }
else
format.html { redirect_to orders_path, notice: "Error #{@order.errors}" }
#format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
def update
@order = current_order
@order_item = @order.order_items.find(params[:id])
@order_item.update_attributes(order_item_params)
@order_items = @order.order_items
respond_to do |format|
if @order.save
format.html {redirect_to orders_path, notice: "Item modificado"}
format.js {}
#format.json { render json: @order, status: :created, location: @order }
else
format.html { redirect_to orders_path, notice: "Error #{@order.errors}" }
#format.json { render json: @order.errors, status: :unprocessable_entity }
end
end
end
def destroy
@order = current_order
@order_item = @order.order_items.find(params[:id])
@order_item.destroy
@order_items = @order.order_items
end
private
def order_item_params
params.require(:order_item).permit(:quantity, :product_id)
end
def signed_in_user
unless signed_in?
store_location
redirect_to signin_path, notice: "Por favor, ingrese sus credenciales"
end
end
end
Carts_controller.erb
class CartsController < ApplicationController
before_filter :signed_in_user
def new
@products = Product.search(params[:search]).paginate(:per_page => 5, :page => params[:page])
@order_items=current_order.order_items
end
private
def signed_in_user
unless signed_in?
store_location
redirect_to signin_path, notice: "Por favor, ingrese sus credenciales"
end
end
end
单击第一个产品按钮时记录。 [EDITED]
Started GET "/orders?utf8=%E2%9C%93&search=&utf8=%E2%9C%93&authenticity_token=5DtAkn%2F7Ec2pjlbRH7ndQhmBVvY3l3FaFtxVxyalZSQ%3D&order_item%5Bquantity%5D=2&order_item%5Bproduct_id%5D=1&commit=Agregar+a+la+orden" for 127.0.0.1 at 2015-03-15 23:32:52 -0300
Processing by CartsController#new as HTML
Parameters: {"utf8"=>"✓", "search"=>"", "authenticity_token"=>"5DtAkn/7Ec2pjlbRH7ndQhmBVvY3l3FaFtxVxyalZSQ=", "order_item"=>{"quantity"=>"2", "product_id"=>"1"}, "commit"=>"Agregar a la orden"}
[1m[36mUser Load (0.3ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."remember_token" = 'fyF-zqLjJHV7xzC3nnVdPQ' LIMIT 1[0m
[1m[35mOrder Load (8.3ms)[0m SELECT "orders".* FROM "orders" WHERE "orders"."id" = ? LIMIT 1 [["id", 63]]
[1m[36mCACHE (0.0ms)[0m [1mSELECT "orders".* FROM "orders" WHERE "orders"."id" = ? LIMIT 1[0m [["id", 63]]
[1m[35mProduct Load (0.7ms)[0m SELECT "products".* FROM "products" WHERE (name LIKE '%%') LIMIT 5 OFFSET 0
[1m[36m (0.7ms)[0m [1mSELECT COUNT(*) FROM "products" WHERE (name LIKE '%%')[0m
Rendered order_items/new.html.erb (46.4ms)
Rendered order_items/new.html.erb (4.4ms)
Rendered order_items/new.html.erb (2.7ms)
Rendered order_items/new.html.erb (2.6ms)
Rendered order_items/new.html.erb (3.5ms)
[1m[35m (0.4ms)[0m SELECT COUNT(*) FROM "order_items" WHERE "order_items"."order_id" = 63
[1m[36mOrderItem Load (0.4ms)[0m [1mSELECT "order_items".* FROM "order_items" WHERE "order_items"."order_id" = 63[0m
[1m[35mProduct Load (0.4ms)[0m SELECT "products".* FROM "products" WHERE "products"."id" = 2 LIMIT 1
Rendered carts/_cart_row.html.erb (8.4ms)
[1m[36mProduct Load (0.5ms)[0m [1mSELECT "products".* FROM "products" WHERE "products"."id" = 5 LIMIT 1[0m
Rendered carts/_cart_row.html.erb (5.8ms)
[1m[35mCACHE (0.0ms)[0m SELECT "order_items".* FROM "order_items" WHERE "order_items"."order_id" = 63
[1m[36mCACHE (0.0ms)[0m [1mSELECT "products".* FROM "products" WHERE "products"."id" = 2 LIMIT 1[0m
[1m[35mCACHE (0.0ms)[0m SELECT "products".* FROM "products" WHERE "products"."id" = 5 LIMIT 1
Rendered carts/_shopping_cart.html.erb (65.0ms)
Rendered carts/new.html.erb within layouts/application (184.3ms)
Rendered layouts/_header.html.erb (6.9ms)
Rendered layouts/_footer.html.erb (0.6ms)
Completed 200 OK in 792ms (Views: 590.6ms | ActiveRecord: 22.3ms)
点击其他产品时记录
Started POST "/order_items" for 127.0.0.1 at 2015-03-10 02:21:22 -0300
Processing by OrderItemsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"7pM8PRU8Uy4euEtSv/GZyHjRPewdIiAzXDp5xQnd9u0=", "order_item"=>{"quantity"=>"7", "product_id"=>"3"}, "commit"=>"Agregar a la orden"}
[1m[36mUser Load (0.6ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."remember_token" = 'DUoiwJ5FkXlFIXty3UE8xA' LIMIT 1[0m
[1m[35mOrder Load (8.8ms)[0m SELECT "orders".* FROM "orders" WHERE "orders"."id" = ? LIMIT 1 [["id", 34]]
[1m[36m (0.3ms)[0m [1mbegin transaction[0m
[1m[35mProduct Load (0.4ms)[0m SELECT "products".* FROM "products" WHERE "products"."id" = 3 LIMIT 1
[1m[36mSQL (4.0ms)[0m [1mINSERT INTO "order_items" ("created_at", "order_id", "product_id", "quantity", "updated_at") VALUES (?, ?, ?, ?, ?)[0m [["created_at", Tue, 10 Mar 2015 05:21:23 UTC +00:00], ["order_id", 34], ["product_id", 3], ["quantity", 7], ["updated_at", Tue, 10 Mar 2015 05:21:23 UTC +00:00]]
[1m[35m (71.2ms)[0m commit transaction
Redirected to http://localhost:3000/orders
Completed 302 Found in 378ms (ActiveRecord: 95.0ms)
Started GET "/orders" for 127.0.0.1 at 2015-03-10 02:21:23 -0300
Processing by CartsController#new as HTML
[1m[36mUser Load (0.8ms)[0m [1mSELECT "users".* FROM "users" WHERE "users"."remember_token" = 'DUoiwJ5FkXlFIXty3UE8xA' LIMIT 1[0m
[1m[35mOrder Load (0.4ms)[0m SELECT "orders".* FROM "orders" WHERE "orders"."id" = ? LIMIT 1 [["id", 34]]
[1m[36mProduct Load (0.6ms)[0m [1mSELECT "products".* FROM "products" LIMIT 5 OFFSET 0[0m
Rendered order_items/new.html.erb (8.6ms)
Rendered order_items/new.html.erb (3.9ms)
Rendered order_items/new.html.erb (3.6ms)
[1m[35m (0.6ms)[0m SELECT COUNT(*) FROM "order_items" WHERE "order_items"."order_id" = 34
[1m[36mOrderItem Load (0.4ms)[0m [1mSELECT "order_items".* FROM "order_items" WHERE "order_items"."order_id" = 34[0m
[1m[35mProduct Load (0.6ms)[0m SELECT "products".* FROM "products" WHERE "products"."id" = 3 LIMIT 1
Rendered carts/_cart_row.html.erb (6.8ms)
Rendered carts/_shopping_cart.html.erb (20.4ms)
Rendered carts/new.html.erb within layouts/application (74.1ms)
Rendered layouts/_header.html.erb (6.9ms)
Rendered layouts/_footer.html.erb (1.2ms)
Completed 200 OK in 378ms (Views: 366.0ms | ActiveRecord: 3.4ms)