문제

Google 차트 API를 사용하여 Rails 응용 프로그램에서 파이 차트를 생성합니다. 그러나 나는 로컬 변수를 도우미의 DEF에 전달하는 데 문제가 있습니다. DEF는 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) %>

로컬 변수를 어떻게 전달합니까?

도움이 되었습니까?

해결책

당신이 얻는 오류는 무엇입니까? 당신은 그것을 다음과 같이 부를 수 있어야합니다.

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

나는 추가했다 {}해시 주위에있어서 명확하고 명확하게 만들기 위해.

사용 #{var} 그것은 현으로 대체하기 때문에 여기서 할 방법이 아닙니다. "Here is the value: #{var}".

다른 팁

따라서 코드는 확실히 숫자 값을 원하지만 #{} 문자열 내부에서 사용하지 않는 한 주석을 시작할 것입니다. 그리고 당신은 거기에 문자열을 원하지 않습니다.

그리고 실제로, pie_chart는 서면으로 어느 하나 당신이 말하는대로 2D 배열 또는 해시, 유일한 사용이 2 변수 인 경우 .map 반복자. 따라서 어느 쪽이든 사용할 수 있어야합니다 [["str1", light_cost], ["str2", sm_appl_cost]] 또는 { 'str1'=>light_cost, 'str2'=>sm_appl_cost}.

그러나 그 지역 주민이 숫자인지 확인해야합니다. 사용해보십시오 .to_i 또는 .to_f 그들이 그렇지 않다면 그들에게.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top