【发布时间】:2014-04-29 09:13:02
【问题描述】:
我正在尝试借助 JSON 将以下操作中的布尔值返回给 Ajax:
控制器
get "#{$INDEX_BASE_URL}/login" do
user_id = params[:user_id]
if ToConfigureUser.check_existence(user_id)
data = {:bool => 'true'}.to_json
return data
else
data = {:bool => 'false'}.to_json
return data
end
end
我正在使用 JSON,但我什至不确定这是否是最佳做法。
这是阿贾克斯:
AJAX
$.ajax(url,{
datatype: "json",
contenType: "application/json; charset=utf-8",
type: "GET",
data:{
'user_id' : user_id
},
success: function(data){
if(data.bool == "true")
{
alert("True");
}
else
{
alert("False");
}
},
error: function(data){
alert("Something went wrong");
}
});
即使方法“check_existence”返回真,我的 Ajax 也总是提示“假”。可能是因为我的 JSON 构造不好。如何将一个布尔值从 Ruby 控制器返回给 Ajax?它不一定必须是 JSON,如果有更好的方法请告诉我。
【问题讨论】:
-
你必须使用
render :json => { bool: <VALUE> }之类的东西而不是return。 -
@DaniëlKnippers 现在我收到渲染方法的错误“ArgumentError - 参数数量错误(1 代表 2..4)”
-
我对你的
get "#{$INDEX_BASE_URL}/login" do部分感到困惑。我认为您的控制器应该定义一个呈现 json 的def login,并在您的 AJAX 中向"/login"发出请求,该请求应该路由到该控制器操作。我觉得你做得不对,也许this example可以帮助你。
标签: ruby ajax json boolean return