无法在RoR中获取json数据

时间:2013-03-06 20:22:38

标签: ruby-on-rails ajax json ruby-on-rails-3 get

这是我在我的视图中的代码,我正在向方法campaign_creation发送ajax get请求

$(document).ready(function(){
    $("#submit").click(function(){
        $.get("/configure_campaign/campaign_creation",{category_name: $("#category_name").val()}, function(data){

            $("#category_name").val('');
            $("#form_add_category").css("display","none");
            alert(data.category_name)

        })
    })
})

这是我的方法代码

def campaign_creation
    if(params[:page_id] and params[:page_access_token])

        abcd=params[:page_id].split("_")
        session[:page_id]=abcd[0]
        session[:page_access_token] = params[:page_access_token]

    else

        category=Category.new
        category.category_name=params[:category_name]
        category.page_id=session[:page_id]
        category.save
        @category=Category.find(1)
        @category.to_json

    end
end

我想我应该能够在我的变量数据中访问@category。如果我只是将数据放在我的警告框中,我会得到页面的完整代码,如果data.category_name我得到的结果是未定义的。

1 个答案:

答案 0 :(得分:0)

从您为单独行动提供的代码中,您不会呈现JSON响应。您的campaign_creation方法将尝试查找campaign_creation.html.erb文件并呈现text/html响应。

相反,您需要明确告诉Rails呈现JSON数据和操作结束并停止处理。

render json: @category and return

现在您可以预期Ajax响应中的data变量可以访问@campaign的{​​{1}}属性。