2012-05-11 99 views
1

我有這樣的jQuery代碼:路線AJAX軌麻煩

$(".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 &量= 111 &車= 27

但我需要這樣的網址:

.../line_items/update_quantity/ID = 28 &量= 2 &購物= 27

無?

A具有這樣的路線:

匹配 'line_items /:動作/ ID =:ID &量=:量&購物=:購物車'=> '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 
+2

恕我直言,你不應該建立這樣的路線。除了進入你已經擁有的小問題之外,你也無法改變參數定義的順序。 – rubish

+0

@rubish你說的是什麼? – byCoder

+1

首先,更新命令應該是PUT/POST,而不是GET。這不是很安全。其次,你需要更好地理解軌道佈線,如下所示:http://guides.rubyonrails.org/routing.html – corroded

回答

3

查詢參數應後?

HTTP/1.1: Protocol Parameters

啓動0

「http」方案用於通過HTTP協議定位網絡資源。本節爲http URL定義特定於方案的語法和語義。

http_URL =「http:」「//」host [「:」port] [abs_path [「?」查詢]

路線可以通過

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

&quantity=:quantity&cart=:cart更換是不必要的

或更好

resources :line_items do 
    get :update_quantity, :on => :member 
end 
+0

然後如何發送這個參數到方法?你沒有理解我想要什麼 – byCoder

+0

比它給了我這樣的鏈接update_quantity/28?quantity = 2&cart = 27因爲如果我做了如下的jscript http://192.168.1.4:3000/line_items/update_quantity/?id=28&quantity = 3&cart = 27它給我找不到ID = update_quantity – byCoder

+0

是的LineItem。你的行爲是否被執行? – ck3g

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更新記錄