배열에서 변수를 사용하여 DEF -RAILS로 전달
-
06-07-2019 - |
문제
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
그들이 그렇지 않다면 그들에게.