2010-05-31 68 views

回答

6

你必須瞭解你的觀點,即Ruby代碼獲取服務器上執行 - 在頁面上任何JavaScript獲取執行變更之前。

這就是爲什麼你不能做這樣的東西:

<script> 
    var js_var = 1; 
</script> 

<%= get_value_of_js_var_somehow %> 

反過來想它的工作原理:

<script> 
    var js_var = <% generate_value_with_ruby %>; 
    do_something_in_javascript_with_js_var(); 
</script> 
+1

,這裏是一個很簡單的例子,如何「do_something_in_javascript」 - http://stackoverflow.com/questions/6835512/how-to-set-a-導軌-可變等於對一個的JavaScript變量 – 2012-12-12 05:28:59

4

你可以通過JavaScript變量使用AJAX軌道。例如,如果你想從你的JavaScript可以執行以下代碼通過ID爲一個用戶的方法在Rails控制器:

<script> 
    var id = 1; 
    <%= remote_function :url => {:controller=>'controller_name', :action=>'method_name'}, :with => "'user_id=' + id" %> 
</script> 

您將通過POST請求得到的變量,作爲參數。您可以使用params[:user_id]訪問它。

def method_name 
    if params[:user_id].exists? 
    u = User.where('id = ?', params[:user_id]).first 
    end 
    puts u.path 
end 

希望我已經回答了您的問題。

0

如果您在更高版本的javascript(本身:application.js)中有此JavaScript變量,那麼您始終可以在視圖中引用它。

#application.js 
var someVar = "Hello World"; 
在您的視圖(在客戶端執行)

然後,你可以到...

<script type='text/javascript'> 
    alert(someVar); 
</script> 

我認爲我們需要更具體的ellaboration如果這三個職位的人不回答你的問題。

-1

假設我們有如下腳本

<script type="text/javascript"> 
    var a="some value"; 
    document.getElementById('tagid').innerHTML='<%= tag(:div,content_tag(:p,' " +a+ " '), :id=>' " +a+ " ', name=>"somename") %>'; 
</script> 
相關問題