1

我有这样的jQuery代码:

  $(".quantity").blur(function() {
    console.log("upd");
    $.ajax({
    url: "/line_items/update_quantity/",
    type: "GET",
    data: {id: $(this).attr('id'), quantity: $(this).attr('quantity'), cart: $(this).attr('cart')} 
    });
  });

但是这段代码为我生成了这样的网址:

.../line_items/update_quantity/?id=29&quantity=111&cart=27

但我需要这样的网址:

.../line_items/update_quantity/id=28&quantity=2&cart=27

没有 ?

A有这样的路线:

匹配 'line_items/:action/id=:id&quantity=:quantity&cart=:cart' => 'line_items#update_quantity'

我试过了,但没有任何事情发生。请帮帮我。

def update_quantity
    @cart = current_cart
    @line_item = LineItem.find(params[:id])
    respond_to do |format|
      if @line_item.update_attribute(:quantity, params[:quantity]) #&& @cart.id == params[:cart]
        format.html { redirect_to(@line_item, :notice => 'Line item was successfully updated.') }
        format.js
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @line_item.errors, :status => :unprocessable_entity }
      end
    end
  end
4

2 回答 2

3

查询参数应该在之后启动?

HTTP/1.1:协议参数

“http”方案用于通过 HTTP 协议定位网络资源。本节定义了 http URL 的特定于方案的语法和语义。

http_URL = "http:" "//" host [ ":" port ] [ abs_path [ "?" query ]]

your route can be replaced by

match 'line_items/:action/:id' => 'line_items#update_quantity'

&quantity=:quantity&cart=:cart is unnecessary

or better

resources :line_items do
  get :update_quantity, :on => :member
end
于 2012-05-11T16:26:05.360 回答
1

您必须手动在路线末尾附加 id:

$(".quantity").blur(function() {
    console.log("upd");
    $.ajax({
    url: "/line_items/update_quantity/" + $(this).attr("id"),
    type: "GET",
    data: {quantity: $(this).attr('quantity'), cart: $(this).attr('cart')} 
    });
  });

但我同意 rubish,你不应该用 GET url 更新记录

于 2012-05-11T15:35:37.133 回答