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はhttp://localhost:3000/recipes/:recipe_id/favoriteではなくRequest URL:http://localhost:3000/recipesです。

私は間違っていますか? IDを供給するためにデータパラメータを使用する必要がありますか?

+0

gil.neoは、このお気に入りへのルートを持つroutes.rbがあることを確認しました。さらに、私はあなたのレシピコントローラに以下のような方法が必要だと信じています:gil.neoが言ったように、あなたがこのお気に入りのルートを持つroutes.rbを持っていることを確認しました。 'defの好きな @recipe = Recipe.find(のparams [:ID])を加えて、私はあなたのようなもので、あなたのレシピコントローラのメソッドを必要と信じて!Recipe.increment @ (:好きな) エンド' – tfantina

答えて

1

私はあなたがその要求のルートを持っている気づいたので[OK]を、私は私の答えを変更しています。

コントローラでリクエストを正しく処理していないため、このエラーが発生していると思います。コントローラーにJSONリクエストを処理させるために、以下をコントローラーに追加してみてください。

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

@ジェレミートーマス、これを試してください/ – Sravan

+0

@ジェレミートゥア、これを実装しましたか? – Sravan

+0

ajaxは型の代わりにメソッドを使用する必要がありますか? –