ruby-on-rails 获取型号或404 on Rails

tzxcd3kk  于 2023-03-20  发布在  Ruby
关注(0)|答案(3)|浏览(168)

是否可以在rails上使用get_by_id_or_404函数,例如,在我的控制器中,我用途:

@destination = Destination.find_by_id(params[:id])

如果没有设置id或者没有找到目的地,我如何让Rails重定向到404页面?
谢谢大家!

arknldoa

arknldoa1#

在生产模式下,Rails通过呈现404错误页面自动挽救ActiveRecord::RecordNotFound异常。
只需使用bang版本的finder,它在找不到结果时引发ActiveRecord::RecordNotFound

@destination = Destination.find_by_id!(params[:id])

但是,在您的情况下,没有理由使用find_by方法,只需退回到find即可。

@destination = Destination.find(params[:id])
bfnvny8b

bfnvny8b2#

这是从指南:
您可以在动态查找器的末尾指定一个感叹号(!),以便在它们不返回任何记录时引发ActiveRecord::RecordNotFound错误,如Client.find_by_name!(“Ryan”)
当这种情况发生时,Rails将为您呈现404页面。另外,只需使用find作为find_by_id的快捷方式:

@destination = Destination.find!(params[:id])
ljo96ir5

ljo96ir53#

我认为在生产中,它会提高错误,并显示404或500。

相关问题