簡體   English   中英

從Haml在外部JavaScript中調用ruby數組

[英]Call a ruby array in external javascript from Haml

我是RoR和Web應用程序開發的新手,我使用Rails 3.2.3,並且我想在Highcharts中使用ruby數組,並且在視圖文件中使用Haml。

我在控制器中定義了一個數組,如下所示:

...
def show
  ...
  @close_array = DailyQuote.where(company_id: @company.id).map(&:closing_price)
end

我已經在我的Haml視圖文件中聲明了它。

%body
  - close_array_j = "#{@close_array.inspect}"
  =javascript_include_tag :build_chart
  #container{:style => "min-width: 300px; height: 300px; margin: 0 auto"}

現在,我想在Highcharts圖表中使用此數組close_array_j ,該圖表已在稱為build_chart.js的單獨文件中編寫了代碼:

$(function () {
  var chart;
  $(document).ready(function() {
  chart = new Highcharts.Chart({
    chart: {
      renderTo: 'container',
      },
...
    series: [{
      name: 'Closing Price',
      data: $('#close_array_j')
    }]
...

高圖表圖表沒有數據呈現。 順便說一句,我不太了解ruby,haml或js,你可能會說...

您可以在HAML中像這樣打印變量

%script
  != "close_array_j = #{@close_array.to_json};"

然后在javascript中使用它

...
series: [{
    name: 'Closing Price',
    data: close_array_j
}]
...

您在haml視圖文件中執行的變量賦值無效。 它不會自動將其自身應用到您的javascript文件中。

您可以將其包裝在腳本標簽中。 這是erb版本:

<%= javascript_tag do %>
 close_array_j =  = '<%= j @close_array.to_json %>';
<% end %>

但是,還有其他更清潔的技術。 一種方法是利用HTML5數據屬性嵌入諸如您的數據之類的數據。 使用Jquery很容易訪問。

我建議您觀看Ryan Bate的截屏視頻,其中介紹了如何以多種方式將數據傳遞到javascript。

http://railscasts.com/episodes/324-passing-data-to-javascript?view=asciicast

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM