-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 に答える