![](/img/trans.png)
[英]passing javascript variable to ruby function call in javascript HAML
[英]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.