-1

我收到此错误:

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

我敢肯定它相对简单,但我无法弄清楚。

4

2 回答 2

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]
于 2013-01-16T22:34:19.443 回答
0

当您将某些内容保存到会话时,它会将其保存为字符串,因此当您从会话中拉回某些内容并希望对其执行 Integer 方法时,您可能必须指定它是一个整数。

执行以下操作:session[:assumptions][:spread_x].to_i将会话内容用作整数。另外,请注意我认为您的原始代码中有错误=

最后,您可能不会遇到这种情况,但我有时会在会话变量中使用嵌套符号时遇到问题。如session[:assumptions][:spread_x]. 我有时不得不将其更改为类似session[:assumptions]['spread_x']并用字符串调用嵌套变量。

祝你好运!

于 2015-12-05T19:05:56.933 回答