Чтобы ответить на ваш второй вопрос в первую очередь, нет, вы должны построить коллекцию моделей предложений с помощью запроса в контроллере, таким образом, оставляя представление просто перебирать эту коллекцию и визуализировать HTML.
Кроме того, блок if не делает то, что вы хотите. Вы сказали «Сегодняшняя дата или раньше», но вы проверяете сегодняшнюю дату или позже. Кажется, вы перевернули логику.
Полученная ошибка означает, что date_from равно нулю. Вы проверяете эти поля или им разрешено иметь нулевое значение?
Вот как я бы настроил эту коллекцию:
class Offer < AR::Base
scope :end_date_not_reached, where("date_from <= ?", Date.today).where("date_to > ?", Date.today)
end
В контроллере:
@offers_in_progress = Offer.end_date_not_reached
В виде:
<% @offers_in_progress.each do |offer| %>
<!-- stuff here -->
<% end %>
Надеюсь, это поможет.