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 %>

もちろん、どちらかstateまたはimage_filenilでもある場合、これは機能しません。

于 2012-05-04T17:38:50.593 に答える