我正在开发一个 Rails 3 应用程序,我的一个控制器中有一条线,如下所示:
@features = Feature.find(:all, :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
@feature = @features.find(params[:feature])
这个想法是从数据库中获取一组“特征”,受到一些限制,然后从该集中特别挑选一个。如果有问题的记录存在于数据库中但不符合约束条件,我不想返回它。因此,我正在做@features.find
而不是Feature.find
.
我遇到的问题是视图需要@feature.title
,这会产生错误:
undefined method 'title' for #<Enumerator:0x0000010216efd8>
当然,我可以通过用这个替换上面的内容来回避这个问题,在这里我只需定义两次约束:
@features = Feature.find(:all, :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
@feature = Feature.find(params[:feature], :conditions => ['featured_at < ?', Time.current], :order => 'featured_at ASC')
但这似乎不优雅而且有点多余。
最好的解决方案是什么?如何让我的@features.find
结果按原样处理Feature
,而不是Enumerator
缺少我需要在视图中访问的变量/方法?
感谢您对此的任何想法。