2014-04-29 64 views
0

我想從以下動作,以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,如果有更好的方法,請讓我知道。

+0

你必須使用'render:json => {bool:}'而不是返回值。 –

+0

@DaniëlKnippers現在我得到錯誤「ArgumentError - 錯誤的參數數量(1代表2..4)」爲渲染方法 – Stanko

+0

我很困惑你的'get「#{$ INDEX_BASE_URL}/login」do'部分。我會認爲你的控制器應該定義一個呈現json的'def login',並且在你的AJAX中你要求''/ login'',這個請求應該被路由到那個控制器動作。我認爲你做得不對,也許[這個例子](http://guides.rubyonrails.org/action_controller_overview.html#rendering-xml-and-json-data)可以幫助你。 –

回答

0

我修復了這個問題。改變:布爾'布爾'

控制器

get "#{$INDEX_BASE_URL}/login" do 
    user_id = params[:user_id] 

    if ToConfigureUser.check_existence(user_id) 
    {'bool' => 'true'}.to_json 
    else 
    {'bool' => 'false'}.to_json 
    end 
end 

我什麼也沒有改變的Ajax代碼。

1

內容類型可能設置不正確,因爲contentType中缺少t

+0

我改變了它,但可悲的是,這不是問題,謝謝反正 – Stanko