我收到了这个错误:
TypeError in Properties#show
在/Users/taylor/Pro/rentroll_analysis/app/views/properties/show.html.erb第67行,引发此异常:
can't convert Array into Integer
这是第67行的提取来源:
64: <td><%=u.unit_number%></td>
65: <td><%=u.unit_type%></td>
66: <td><%=number_to_currency(u.market_rent - u.current_rent)%></td>
67: <td><%=number_to_currency(u.market_rent - u.current_rent)*(session[:assumptions]= [:spread_x])%></td>
68:
69: </tr>
70: <%end%>
运行时:
def setup_assumptions
if session[:assumptions].nil?
session[:assumptions]=[:min_spread=>400,:spread_x=>10]
end
end
我确信它相对简单,但我无法理解。
答案 0 :(得分:1)
如果您尝试将其设置为地图,请使用地图(花括号)而不是数组(方括号):
session[:assumptions] = { :min_spread => 400, :spread_x => 10 }
否则,您将session[:assumptions]
设置为中带有哈希的数组。
另外,你的目标是什么?
number_to_currency(u.market_rent - u.current_rent) * (session[:assumptions]= [:spread_x])
我认为你的意思是:
number_to_currency(u.market_rent - u.current_rent) * session[:assumptions][:spread_x]
答案 1 :(得分:0)
当您将某些内容保存到会话中时,它会将其保存为字符串,因此当您从会话中提取某些内容并希望对其执行Integer方法时,您可能必须指定它是一个整数。
执行以下操作:session[:assumptions][:spread_x].to_i
将会话内容用作整数。此外,请注意我认为您的原始代码中存在错误的=
。
最后,您可能不会遇到此问题,但我有时在会话变量中使用嵌套符号时遇到问题。与session[:assumptions][:spread_x]
中一样。我有时不得不将其更改为类似session[:assumptions]['spread_x']
的内容,而是使用字符串调用嵌套变量。