0

Railsアプリケーションで円グラフを生成するためにGoogleChartsAPIを使用しています。ただし、ヘルパーのdefにローカル変数を渡す際に問題が発生します。defは、[label、value]ペアの2D配列を取ります。ローカル変数を値として渡そうとすると、それは気に入らない。これらは事前に計算され、通貨形式です。変数を引用符または中に入れることも機能し#{}ません。

application_helper.rb

  def pie_chart(data, options = {})
    options[:width] ||= 250
    options[:height] ||= 100
    options[:colors] = %w(F5DD7E 0DB2AC FC8D4D FC694D FABA32 704948 968144 C08FBC ADD97E)
    dt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-."
    options[:divisor] ||= 1
    options[:title] ||= "Energy Costs"

    while (data.map { |k,v| v }.max / options[:divisor] >= 4096) do
      options[:divisor] *= 20
    end

    opts = {
      :cht => "p",
      :chd => "e:#{data.map{|k,v|v=v/options[:divisor];dt[v/64..v/64]+dt[v%64..v%64]}}",
      :chl => "#{data.map { |k,v| CGI::escape(k)}.join('|')}",
      :chs => "#{options[:width]}x#{options[:height]}",
      :chco => options[:colors].slice(0, data.length).join(','),
      :chf => "bg,s,FFFFFF00",
      :chtt => "#{options[:title]}"
    }

ビューのdef呼び出し:

<%= pie_chart( [["Light Cost", #{light_cost}], ["Small Appliance Cost", #{sm_appl_cost}]], :width => 550, :height => 200) %>

ローカル変数を渡すにはどうすればよいですか?

4

2 に答える 2

1

あなたが得るエラーは何ですか?あなたはそれを次のように呼ぶことができるはずです:

<%=
  pie_chart(
    [
      ["Light Cost", light_cost],
      ["Small Appliance Cost", sm_appl_cost]
    ],
    { :width => 550, :height => 200 }
  )
%>

{}ハッシュを明確かつ明確にするために、ハッシュの周りに'を追加しました。

使用#{var}することは、文字列での置換のためであるため、ここでそれを行う方法ではありません"Here is the value: #{var}"

于 2009-10-28T02:35:19.173 に答える
0

そのコードは間違いなく数値#{}を必要としますが、文字列内で使用されない限りコメントを開始するだけであり、そこに文字列は必要ありません。

そして実際には、書かれた pie_chartは、2 変数イテレータのみを使用する場合、あなたが言うように 2D 配列またはハッシュのいずれかを取るように見えます。したがって、またはのいずれかを使用できるはずです。.map[["str1", light_cost], ["str2", sm_appl_cost]]{ 'str1'=>light_cost, 'str2'=>sm_appl_cost}

ただし、これらのローカルが数値であることを確認する必要があります。そうでない場合は、.to_iまたはを使用してみてください。.to_f

于 2009-10-28T02:40:29.457 に答える