集合中的第一项不提交动作[已编辑]

时间:2015-03-10 06:26:07

标签: ruby-on-rails ajax

我有两个控制器可以修改一个大视图(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)

0 个答案:

没有答案