Rails 4 + jQuery: PUT ajax request

Rails 4 + jQuery: PUT ajax request

本文关键字:PUT ajax request jQuery Rails      更新时间:2023-09-26

Ajax请求对我来说仍然很新鲜,但是我有一个食谱索引,它带有一个按钮,允许您喜欢的食谱。

<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

我做错了什么?我需要使用data参数来提供id吗?

好的,我正在改变我的答案,因为我注意到你有一个路由的请求。

我相信你得到这个错误是因为你没有在控制器中正确处理请求。试着在你的控制器中添加以下代码,让它处理JSON请求。

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

试一次

$(".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",
    })
})