0

Это мой Аякс вызоврельсов Аякс переадресация вызова на недействительном пути

$.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 

Мой URL показывает, как эти Осматривая product_list.json?sub_cat_id=5

Но отладчик показывает request parameter следующим образом:

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

Я очень смущен, почему это происходит, и любой может это понять.

+0

Из-за любопытства, почему вы вручную отправляете ajax с помощью «удаленных» вариантов Rails? –

+0

@ RichPeck Это не форма. Выбор основан на списке категорий – overflow

+0

Итак, вы привязываетесь к функции «изменения» формы или чему-то еще? Всегда полезно знать всю историю, вот и все :) –

ответ

1

Похоже, у вас нет соответствующей записи маршрута. Вы должны иметь что-то подобное в вашем routes.rb:

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

Если указать только resources :posts, ваш запрос GET будет соответствовать одному для GET /posts/:id (смотрите на выходе rake routes), т.е. show действия PostsController с product_list разобранным, как параметр id в URI запроса. get :product_list, определяемый после этих 7 записей, сделает маршрутизатор соответствующим URI соответствующим действию и контроллеру.

+0

Он работает, но я не могу понять, почему я должен упомянуть его на маршруте – overflow

+0

См. Редактирование ответа. – HargrimmTheBleak

 Смежные вопросы

  • Нет связанных вопросов^_^