2013-07-18 81 views
0

我使用西納特拉,紅寶石,HAML和JavaScript通過JavaScript變量紅寶石函數調用javascript中HAML

所以我想通了,如何調用紅寶石功能HAML的JavaScript

@@layout 
%html 
    %head 
     %title #{@title} 
      :javascript 
       var retval 
       function diff_by_company_id() { 
       retval = "#{ruby_function()}"; 
       } 

然而我現在需要傳遞一個JavaScript變量的ruby函數,我不知道它是如何做到的。 這是我試過的,顯然不起作用。

def test(input) 
    return "Output Number: "+input.to_s + "!" 
end 

@@layout 
%html 
    %head 
     %title #{@title} 
      :javascript 
       var retval 
       function diff_by_company_id() { 
       var input = 1; 
       retval = "#{ruby_function("input")}"; 
       } 

而不是通過輸入值,1,它通過字符串輸入。

所以我得到的是:retval = Output Number: input!

我要的是:retval = Output Number: 1!

如何正確地傳遞任何幫助,將不勝感激。

回答

3

Ruby在服務器端執行,JavaScript在客戶端執行。現在這個工作的原因是在加載頁面時執行ruby代碼。

如果不向服務器發出AJAX請求,就不可能「將JavaScript變量傳遞給ruby」。

+0

有人可以提供一個代碼示例,因爲我有大約20分鐘的ajax體驗。 – Richard

+0

@Richard你最好告訴我們你爲什麼想要做你正在做的事情。什麼是*目標*而不是執行。 – iain

+0

我正在嘗試通過ruby函數發送用戶輸入並顯示結果。 – Richard