Как мне написать код для этой ошибки?
Краткий ответ: "Вы не должны".
Исключения должны быть, IMO, исключительными.Звучит так, как будто вы можете ожидать этого обстоятельства, поэтому я предлагаю вам написать код, который обрабатывает сценарий, не вызывая исключения.
Если вы действительно думаете, что у вас есть обстоятельства, когда запись Article
не существует дляучитывая params[:id]
(кажется немного странным, но я полагаю, что это возможно), тогда я бы посоветовал вам использовать .find_by
вместо .find
:
class ArticlesController < ApplicationController
#...
def show
if @article = Article.find_by(id: params[:id])
# do something with the article
else
render root
end
end
#...
end
Кажется, что вы можете захотетьсделайте redirect
вместо render
:
class ArticlesController < ApplicationController
#...
def show
if @article = Article.find_by(id: params[:id])
# do something with the article
else
redirect_to root_path
end
end
#...
end
Но, может быть, не ...
Кроме того, спасите все так:
def show
begin
@article = Article.find(params[:id])
rescue
render root
end
end
... обычно рассматривается как запах кода.Есть много статей на веб-сайтах о том, почему.