我将如何避免使用 Object.try 对以下内容进行 nil 检查?
<%= image_tag(PeriodState.where("sla_id = ?", sla.id).last.state.image_file) %>
我尝试了很多不同的方法,但仍然收到错误,所以我的语法是关闭的。提前致谢!
我将如何避免使用 Object.try 对以下内容进行 nil 检查?
<%= image_tag(PeriodState.where("sla_id = ?", sla.id).last.state.image_file) %>
我尝试了很多不同的方法,但仍然收到错误,所以我的语法是关闭的。提前致谢!
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 %>
当然,如果其中之一state
或image_file
也可能为零,这将不起作用。