Взятие первого предмета с эшафота на Rails 3 - PullRequest
0 голосов
/ 14 октября 2011

Я уже провел свое исследование, но я думаю, что не знаю, как спросить, поэтому я попытаюсь объяснить ... Я ищу способ запросить первую запись, сохраненную на скаффолде ...Если у меня есть в таблице продукты:

  • слаще
  • брюки
  • шарф
  • теннис

и янапишите @first_prod = Products.first (или что-то в этом роде) на моей модели или, на мой взгляд, <%= Products.each.first %> (или что-то в этом роде). Rails дает мне первый продукт в этом случае - Sweeter ...

Заранее спасибо...

Ответы [ 3 ]

1 голос
/ 14 октября 2011

В рельсах вы можете определить несколько способов получения контента из модели по умолчанию.

В вашем случае я бы создал прицел.

в вашей модели введите следующее:

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

Когда вы звоните

Product.ordered

Он вернет все ваши товары, заказанные к моменту их создания. Если вы хотите самый первый продукт, вы просто

Product.ordered.first

В случае, если вы просто хотите получить предмет в одном конкретном месте, вы можете сделать следующее (вместо того, что я упомянул выше)

Product.find (: first,: order => 'creat_at ASC')

Если мое объяснение не понятно, просто дайте мне знать, и я попытаюсь перефразировать

0 голосов
/ 14 октября 2011

Вы ответили на свой вопрос, я думаю ...

Если вы знаете, что хотите получить доступ к первому сохраненному элементу определенной модели, вам нужно просто позвонить Product.first. Итак, в действии контроллера для представления, к которому вы хотите получить доступ к этим данным, просто введите @product = Product.first ... например

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

Таким образом, вы можете получить доступ к первому сохраненному продукту, а также получить доступ ко всей коллекции в коде представления индекса.

0 голосов
/ 14 октября 2011

Хорошо.Предположим, что когда вы звоните Product.all, он возвращает продукты в указанном выше порядке.Итак, чтобы получить Свитера, вы могли бы позвонить 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 %>
...