1

我可以找到我正在寻找的页面,就像这样:

  @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

我实际上尝试了几种方法来做到这一点,exists?,nil?等等。以上是最基本的。

所以我然后去删除我的页面,我得到一个找不到记录的错误。

Couldn't find Refinery::Page with id=foo

不应该是现在吗?方法防止该错误?我应该怎么做?

4

2 回答 2

1

如何遵循EAFP的原则?

begin
  @my_page = Refinery::Page.find('foo')
rescue ActiveRecord::RecordNotFound
  @my_page = nil
end
于 2013-10-03T07:01:23.340 回答
1

当你这样做

@my_page = ::Refinery::Page.find('foo')

它首先尝试通过 slug 查找页面,如果找不到,则尝试通过 id 查找。如果你不处理本地化,你可以做

@my_page = ::Refinery::Page.find_by_slug('foo')

如果找到它将返回 page ,如果没有找到则返回 nil 。

随着本地化,它变得很复杂,但这应该可以解决问题

if ::Refinery::Page::Translation.find_by_slug('foo').present?
  @my_page = ::Refinery::Page::Translation.find_by_slug('foo').refinery_page
end
于 2013-10-13T13:50:47.763 回答