2016-10-19 5 views
0

Запросы Ajax по-прежнему новы для меня, но у меня есть указатель рецепта с кнопкой, которая позволяет вам любимые рецепты.Rails 4 + jQuery: PUT ajax request

<i class="favorite" data-recipe="<%= recipe.id %>"> 

... Я пытаюсь использовать запрос PUT к маршруту:

favorite_recipe PUT /recipes/:id/favorite(.:format) recipes#favorite 

... с помощью следующей функции JQuery:

$(".favorite").click(function(){ 
     $(this).toggleClass("favorited"); 
     var recipe_id = $(this).data("recipe"); 

     // displays properly when I console.log() it 
     var url_path = '/recipes/' + recipe_id + '/favorite' 


     $.ajax({ 
      url: url_path, 
      type: 'PUT' 
     }) 
    }) 

но в моей консоли разработчика , Я получаю ошибку 404, а указанный url - Request URL:http://localhost:3000/recipes, а не http://localhost:3000/recipes/:recipe_id/favorite.

Что я делаю неправильно? Нужно ли использовать параметр данных для подачи идентификатора?

+0

Поскольку gil.neo сказал, что у вас есть маршруты.rb с маршрутом к этому фавориту. Кроме того, я считаю, что вам нужен метод в вашем рецепте контроллера с чем-то вроде: Как сказал gil.neo, убедитесь, что у вас есть route.rb с маршрутом к этому фавориту. Кроме того, я полагаю, вам нужен метод в контроллере рецепты с чем-то вроде: 'Защиты любимого @recipe = Recipe.find (Params [: ид])! @ Recipe.increment (: любимый) конца' – tfantina

ответ

1

Хорошо, я меняю свой ответ, потому что я заметил, что у вас есть маршрут для этого запроса.

Я считаю, что вы получаете эту ошибку, потому что вы неправильно обрабатываете запрос в своем контроллере. Попробуйте добавить к контроллеру следующее: чтобы он обрабатывал запросы JSON.

respond_to do |format| 
     format.json do 
     render :json => {success: 'yes'} 
     end 
end 
0

Попробуйте это один раз.

$(".favorite").click(function(){ 
    $(this).toggleClass("favorited"); 
    var recipe_id = $(this).data("recipe"); 

    // displays properly when I console.log() it 
    var url_path = "<%= favorite_recipe_path %>" 


    $.ajax({ 
     url: url_path, 
     type: 'PUT', 
     data : JSON.stringify({id: recipe_id}), 
     dataType: "json", 
    }) 
}) 
+0

@Jeremy Thomas, попробуйте это/ – Sravan

+0

@Jeremy Thoas, вы это сделали? – Sravan

+0

следует использовать метод ajax вместо типа? –