Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 集合中的第一个项目没有';t提交行动[已编辑]_Ruby On Rails_Ajax - Fatal编程技术网

Ruby on rails 集合中的第一个项目没有';t提交行动[已编辑]

Ruby on rails 集合中的第一个项目没有';t提交行动[已编辑],ruby-on-rails,ajax,Ruby On Rails,Ajax,我有两个控制器,它们修改一个大视图(carts/new.html.erb)。此视图呈现order_item/new.html.erb,作为搜索结果传递@products的每个产品。此函数工作正常。但是,当我单击为每个产品创建的表单的submit按钮时,这不起作用(仅适用于第一个产品),对于其他产品,它可以正常工作。因此,我看到生成的html,第一个表单标记没有生成 缺少标签 <form accept-charset="UTF-8" action="/order_items" class="

我有两个控制器,它们修改一个大视图(carts/new.html.erb)。此视图呈现order_item/new.html.erb,作为搜索结果传递@products的每个产品。此函数工作正常。但是,当我单击为每个产品创建的表单的submit按钮时,这不起作用(仅适用于第一个产品),对于其他产品,它可以正常工作。因此,我看到生成的html,第一个表单标记没有生成

缺少标签

<form accept-charset="UTF-8" action="/order_items" class="new_order_item" data-remote="true" id="new_order_item" method="post"></form>
单击其他产品时记录

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)

您的日志显示了两个非常不同的操作。打破一个与提交您的订单项目表单无关-它与创建一个新购物车有关
CartsController#new
它正在崩溃,因为您尚未将
product
作为变量传递到Carts/new.js.erb中-订单项目控制器如何运行到Carts控制器?好的,我能做什么?我不明白这在其他产品中是如何工作的。问题(在日志中很清楚)是在
CartsController#new
操作中没有设置名为
product
的变量,但模板
app/views/carts/new.js.erb
(将由该操作呈现)显然,我们希望有一个
产品
变量。我不知道你希望这个行动何时以何种方式进行。。。但这是你的问题-现在你必须弄清楚是否需要设置该变量,或者更改模板以执行其他操作。我知道new.js.erb并不是什么都不做。所以我删除了那个文件。现在,当我单击第一个产品时,日志只显示没有错误的第二个操作:Started GET“/orders?utf8=%E2%9C%93&search=&utf8=%E2%9C%93&authenticity\u-token=7pM8PRU8Uy4euEtSv%2fgzyhjrpewdiiazxdp5xnd9u0%3D&order\u-item%5Bquantity%5D=3&order\u-item%5Bproduct%5Bproduct\id%5D=2&commit=Agregar+a+la+orden”对于2015-03-10 02:19:29-0300时的127.0.0.1,CartsController的处理(新为HTML1)注释中的代码格式非常糟糕=请将所有代码放入原始问题2),这看起来只是stacktrace的起始行。。。其余的也很重要。
 <% @products.each do |product| %>
<%= render template: "order_items/new", :locals => { :product => product } %>
<% end %> 
<%= 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 %>
$("#shopping_cart").html("<%=escape_javascript(render partial: 'carts/shopping_cart', locals: { order_items: @order_items, order: @order } ) %>");
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
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
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)