我想從以下動作,以Ajax和JSON的幫助下返回一個布爾值:從紅寶石控制器阿賈克斯返回布爾打電話
控制器
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」 返回true。可能是因爲我的JSON構造不好。我怎樣才能從Ruby控制器返回一個布爾值到Ajax?它不一定是JSON,如果有更好的方法,請讓我知道。
你必須使用'render:json => {bool:}'而不是返回值。 –
@DaniëlKnippers現在我得到錯誤「ArgumentError - 錯誤的參數數量(1代表2..4)」爲渲染方法 – Stanko
我很困惑你的'get「#{$ INDEX_BASE_URL}/login」do'部分。我會認爲你的控制器應該定義一個呈現json的'def login',並且在你的AJAX中你要求''/ login'',這個請求應該被路由到那個控制器動作。我認爲你做得不對,也許[這個例子](http://guides.rubyonrails.org/action_controller_overview.html#rendering-xml-and-json-data)可以幫助你。 –