0

我将如何避免使用 Object.try 对以下内容进行 nil 检查?

<%= image_tag(PeriodState.where("sla_id = ?", sla.id).last.state.image_file) %>

我尝试了很多不同的方法,但仍然收到错误,所以我的语法是关闭的。提前致谢!

4

1 回答 1

1

try不太适合这个:无论结果image_tag如何,总是会被调用 - 所以你最终可能会用 nil 调用它。您需要先检查图像是否存在,然后才在这种情况下创建图像标签。所以我会在你的控制器中得到 PeriodState 并if在你的视图中有一个简单的:

# in controller
@period_state = PeriodState.where("sla_id = ?", sla.id).last

# in view 
<%= image_tag(@period_state.state.image_file) if @period_state %>

当然,如果其中之一stateimage_file也可能为零,这将不起作用。

于 2012-05-04T17:38:50.593 回答