从Rails 3上的脚手架中取出第一个项目

时间:2011-10-14 17:59:01

标签: database ruby-on-rails-3 scaffolding

我已经做过我的研究,但我想我不知道怎么问,所以我会试着解释一下...... 我正在寻找一种方法来要求保存在脚手架上的第一个条目...... 喜欢 如果我在表中有产品:

  • Sweeter
  • 裤子
  • 围巾
  • 网球

我在我的模型或我的视图@first_prod = Products.first(或类似的东西)中写<%= Products.each.first %>(或类似的东西)Rails给了我这个案例中的第一个产品 - 更甜... < / p>

提前致谢...

3 个答案:

答案 0 :(得分:1)

在rails中,您可以定义一些从模型中获取内容的默认方法。

在你的情况下,我会创建一个范围。

在模型中

输入以下内容:

scope ordered, :order => "Product.created_at ASC"

致电时

Product.ordered

它会在创建时返回所有订购的产品。 如果您想要第一个产品,那么

Product.ordered.first

如果您只想在一个特定的地方获得该项目,您可以执行以下操作(而不是我上面提到的那样)

Product.find(:first,:order =&gt;'created_at ASC')

如果我的解释不明确,请告诉我,我会尝试重新

答案 1 :(得分:0)

好。我们假设当您致电Product.all时,它会按照您在上面指定的顺序返回产品。因此,要获得Sweeter,您可以致电Product.all.first。或者,如果您在控制器中完成了@products = Product.all,并且在视图中想要它,则可以使用@products.first。或者,如果您正在循环使用它们并想要对第一个执行特殊操作,则可以执行此操作:

<% @products.each_with_index do |product, i| %>
  <% if id == 0 %>
     do something special as this is the first product
  <% end %>
<% end %>

答案 2 :(得分:0)

你回答了自己的问题,我想......

如果您知道要访问特定型号的第一个已保存项目,则只需拨打Product.first即可。因此,在您要访问该数据的视图的控制器操作中,只需键入@product = Product.first ...例如

def index
  @products = Product.all
  @product = Product.first
end

这样您就可以访问第一个保存的产品,并可以访问索引视图代码中的整个集合。