0

私は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"}

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')
    }]
...

ハイチャートチャートはデータなしでレンダリングされています。ちなみに、私はあなたがおそらく言うことができるように、rubyまたはhamlまたはjsをよく知りません...

4

2 に答える 2

4

このような変数をHAMLで印刷できます

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

そしてそれをjavascriptで使用します

...
series: [{
    name: 'Closing Price',
    data: close_array_j
}]
...
于 2012-09-03T02:15:32.833 に答える
0

hamlビューファイルで行う変数の割り当ては効果がありません。javascriptファイルに自動的に適用されることはありません。

スクリプトタグでまとめることができます。erbバージョンは次のとおりです。

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

ただし、他にもクリーンな手法があります。1つは、HTML5データ属性を利用して、自分のデータなどのデータを埋め込むことです。Jqueryで簡単にアクセスできます。

さまざまな方法でデータをJavaScriptに渡す方法について、RyanBateのスクリーンキャストをご覧になることをお勧めします。

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

于 2012-09-03T02:37:45.557 に答える