2014-03-06 72 views
1

Ruby的字符串我有Ruby代碼:如何包含在JavaScript

<%= "hello #{@namevar}" if condition %> 

我可以包括紅寶石JS代碼片段在以下way-

<script> 
    var v1="<%= @user.name %>" 
</script> 

但不能嵌入以前的代碼在JavaScript中。

我曾嘗試以下:

var v2="<%= \"hello #{@namevar}\" if condition %>"; 

但沒有奏效。

Thanx。

+0

你想做些什麼?根據條件將字符串分配給一個變量? –

+0

我想要這個 '<%=「hello#{@ namevar}」if條件%>'進入一個JS變量 –

回答

3

你嘗試幾乎是正確的,你並不需要,雖然逃脫Ruby代碼裏面的雙引號:

var v2="<%= "Our funding ask is #{@startup.funding_ask_text}." if @startup.try(:funding_ask_text) %>";  
+0

Thanx。這工作。我沒有預料到它會按照慣例工作。感謝名單。 –

0

在佈局中添加hidden_​​field

<%= hidden_field_tag 'user_name', @user.name%> 

而且在腳本

var v1 = $('#user_name').val() 
+0

我不能簡單地在JS中分配ruby代碼塊? –

+0

這應該很簡單。但是你給了這樣一個解決方案,我需要一個額外的DOM元素! 這絕對不是解決方案。 –

1

資產管道

不能包括在資產管道

如果你想包括「裸」紅寶石Ruby代碼,你將不得不使用.js.erb並把文件放在views目錄。這樣做的原因是因爲資產管道即可precompiled,這將使得Ruby代碼沒用


瓦爾

如果你想使用基於Rails的數據在你的JS,你會必須先渲染你的視圖中的數據,然後調用它從JS(如Bachan的答案)

可以使用Gon gem

+0

'var v1 =「<%= @ user.name%>」'根本不是問題。那麼你想說什麼? –

+0

我不想「說」任何東西 - 我試圖給你一些關於如何在你的資產JS中包含增值稅的想法。在您的資產管道中包含裸露的紅寶石代碼是不好的做法,將來會導致問題 –

+1

好的。 thanx的詳細說明。 +1 –