0

這是我的Ajax調用軌Ajax調用重定向到無效的路徑

$.ajax({ 
    type: "GET", 
    url: '/posts/product_list.json', 
    data: {sub_cat_id: parseNumber(sub_category_id)}, 
    dataType: 'json', 
    success: function(data) { 
     //$('#selection').show(); 
     $('#selection').html(data.html); 
    }, 
    error: function(data){ 
    } 
}); 

我有post_list控制器

respond_to :json,only: :product_list 
     def product_list 
     @products = Product.where(sub_category_id: params[:sub_cat_id]) 
     ##blah blah blah 
     end 

我的網址顯示像這樣在檢查product_list.json?sub_cat_id=5

但調試顯示如下request parameter

{"sub_cat_id"=>"5", "action"=>"show", "controller"=>"posts", "id"=>"product_list", "format"=>"json"} 

我非常困惑,爲什麼會發生這種情況,任何人都可以清除它。

+0

出於好奇,你爲什麼手動提交使用Rails的「遠程」選項的AJAX? –

+0

@RichPeck它不是一個表格。選擇是基於類別列表 – overflow

+0

好吧,所以你綁定到窗體的「更改」功能或什麼?知道整個故事總是有幫助的,這都是:) –

回答

1

看起來你沒有相應的路由條目。你應該有這樣的事情在你的routes.rb

resources :posts do 
    get :product_list, on: :collection 
end 

如果只指定resources :posts,您的GET請求將匹配一個GET /posts/:id(看看rake routes輸出),即showproduct_listPostsController動作解析爲請求URI中的id參數。 get :product_list在這7個條目之後定義會使路由器將URI與相應的動作和控制器相匹配。

+0

它正在工作,但我不明白爲什麼我需要在路線中提到它 – overflow

+0

請參閱編輯答案。 – HargrimmTheBleak