Ruby内联开始和救援没有正常执行

时间:2014-09-04 18:03:03

标签: ruby-on-rails ruby exception exception-handling

我有以下代码

'Performance' => {
    'Date' => performance_values.date.strftime('%m/%d/%Y'),
    'Ratio' => begin sprintf("%0.02f", performance_values.ratio) rescue nil end},
'Ratings' => {
    'Overall' => performance_values.overall_rating,
    '3-yr' => performance_values.3yr_rating}

有了'比率',它有时可能是零,所以我试图开始/拯救sprintf函数,只是让它为零。

当它运行且performance_values.ratio为nil时,我收到以下错误消息:

TypeError: can't convert nil into Float

1 个答案:

答案 0 :(得分:2)

在内联时,您不需要指定begin& end。 Rails知道你正在拯救整条生产线。

试试这个:

'Performance' => {
    'Date' => performance_values.date.strftime('%m/%d/%Y'),
    'Ratio' => (sprintf("%0.02f", performance_values.ratio) rescue nil)},
'Ratings' => {
    'Overall' => performance_values.overall_rating,
    '3-yr' => performance_values.3yr_rating}