2014-03-05 89 views
4

我有一個rails應用程序,它提供了一些視圖,其中包含來自數據庫的特定數據,這些數據由一些javascript處理,專門用於Chartjs。如何在Rails 4中的JavaScript中包含ruby變量?

選項我已經探討是:

  1. 使用Ajax調用提取數據關閉服務器。我不喜歡這個,因爲用戶沒有改變任何數據,當我渲染頁面時我可以訪問所有的數據,應該有更好的方法。
  2. 在視圖ERB中使用<script>標籤,並且只需ERB插入變量。這似乎有點哈克,絕對沒有利用我所有的美麗哈姆。但它很容易,並允許我將JavaScript變量放在頁面上,然後可以在document.onload之後拾取。
  3. Gon。偉大的寶石,非常容易。但是,這是否真的需要寶石?

我覺得好像解決方案應該涉及資產管道和某種軌道插值,但我似乎無法使工作非常乾淨。什麼是優雅的鐵軌4解決這個問題的方法?

謝謝大家!

+3

有沒有更好的辦法......只是個人的品味;我個人使用GON(很多RABL或者僅僅是自己)。 Gem使得Json數據輕鬆地向客戶端推送,沒有任何開銷。所以是的,這是值得的。 – zakelfassi

+0

您是否考慮購買JavaScript過濾器? http://haml.info/docs/yardoc/file.REFERENCE.html#javascript-filter 你能舉個例子嗎?這可能有助於更好地理解問題。 – Elyasin

回答

0

有很多方法可以從服務器端的數據傳遞給JavaScript中,我將列出最常用的兩個(不使用的寶石或其他外部工具)如下:

  1. 使用您描述的第二種方法,並在javsacript內插入ERB標籤。這是醜陋的,哈克式的,甚至沒有接近最佳實踐。

  2. 使用數據屬性。您可以修改HAML以包含其他屬性,如「data-my-variable」,並通過javascript訪問它(例如使用jQuery:$(element).data("my-variable"))。

在我看來,數據屬性方法是最簡潔的方法,這正是數據屬性的目的。

現在,我不知道HAML,我只與僱員再培訓局工作過,但我發現this answer by Mandeep,這也解釋瞭如何添加數據屬性您HAML:

%a{"data-my-variable" => "my data", href: "#"} 

OR

%a{href: "#", :data => {:my_variable => "my data"}} 

編輯:對不起,我發現你的問題與其他較新的,問題以來,我只是假設它是最近的,而不是一年前:)

相關問題