2012-09-03 29 views
0

我是RoR和Web應用程序開發的新手,我使用Rails 3.2.3,我想在Highcharts中使用紅寶石數組,並且在我的視圖文件中使用Haml。從Haml調用外部javascript中的紅寶石數組

我在控制器中定義這樣一個數組:

... 
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"} 

現在我想使用這個數組,close_array_j,我已經在一個名爲單獨的文件build_chart.js編寫的代碼爲Highcharts圖中:

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

的highcharts圖是被呈現沒有數據。順便說一句,我不知道紅寶石或引入haml或者JS非常好,你可能會說...

回答

3

可以打印變量像這樣的HAML

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

,然後在JavaScript中使用它

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

那正是我需要的,謝謝Loken! – user1642579

0

您在haml視圖文件中執行的變量賦值沒有效果。它不會自動應用於您的JavaScript文件。

你可以把它包裝在腳本標籤中。這裏的erb版本:

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

但是,還有其他更清潔的技術。一種方法是利用HTML5數據屬性來嵌入數據,比如你的數據。使用Jquery很容易。

我建議你觀看瑞恩貝特的屏幕錄像,瞭解如何以各種方式將數據傳遞給JavaScript。

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