我可以找到一个我正在寻找的页面,就像这样:
@my_page = ::Refinery::Page.find('foo')
所以我可以说<%link_to @ my_page.url%>
然后我尝试防止删除该页面的情况,如下所示: if ::Refinery::Page.find('foo').present?
@my_page = ::Refinery::Page.find('foo')
else
@my_page = nil
end
我实际上尝试了几种方法,使用存在?,使用nil?等,以上是最基本的。
然后我去删除我的页面,我得到一条未找到记录的错误。
Couldn't find Refinery::Page with id=foo
现在不应该吗?方法防止该错误?我该怎么做?
答案 0 :(得分:1)
如何遵循EAFP的原则?
begin
@my_page = Refinery::Page.find('foo')
rescue ActiveRecord::RecordNotFound
@my_page = nil
end
答案 1 :(得分:1)
当你这样做时
@my_page = ::Refinery::Page.find('foo')
它首先尝试通过slug查找页面,如果找不到,那么它会尝试通过id找到它。 如果你不处理本地化,你可以做
@my_page = ::Refinery::Page.find_by_slug('foo')
如果找到它将返回页面,如果不找到则返回nil。
通过本地化,它变得复杂,但这应该可以解决问题
if ::Refinery::Page::Translation.find_by_slug('foo').present?
@my_page = ::Refinery::Page::Translation.find_by_slug('foo').refinery_page
end