2015-09-10 4 views
4

Я создаю небольшое приложение для уроков с другим уроком на каждый день. Я хочу показать текущий урок только по индексу и не могу понять, как это сделать. Я googled и нашел некоторую информацию, которая приблизилась, но все еще не могла решить проблему. У меня только один контроллер, DaysController. Нет пользовательского контроллера.Ruby on Rails - показать только текущую дату

Для моей модели (day.rb) Я попытался это

class Day < ActiveRecord::Base 
    validates :description, :date, :link_to, :presence => true 
    scope :created_on, lambda {|date| {:conditions => ['created_at >= ? AND created_at <= ?', date.beginning_of_day, date.end_of_day]}} 


    def self.today 
    self.created_on(Date.today) 
    end 

end 

И мой индекс я попытался эти

<% @day.created_on(Date.today) %> 

    <% @day.today %> 

какие-либо советы ??

+0

Сообщите нам сообщение об ошибке или неправильное поведение, которое вы видите. – Daiku

ответ

1

Если я правильно понял, и для простоты это по существу то, что вы пытаетесь достичь?

Контроллер:

def index 
@days = Day.all 
end 

View (index.html.erb):

<% @days.each do |day| %> 
<% if day.created_at == Date.today %> 
<%= day.field_name %> 
<% end %> 
+0

Так что я просто попробовал это, и ошибки ушли, но он пока не показывает текущий урок. –

+0

День - это весь урок, поэтому вам нужно будет сделать: <% = day.field%> и заменить поле на нужное поле. хочу видеть – sump

+1

@TuckerMayo, если мой ответ был решением, которое вы использовали. Не возражаете ли вы отметить его как правильный ответ? Спасибо. – sump

1

Я хотел бы изменить scope просто использовать Date объект, и я предполагаю, что вы хотите, чтобы ваше условие использовать новую синтаксис:

scope :created_on, ->(date) { where(created_at: date) } 

Тогда метод Day.today должен работать без каких-либо изменений.

1

Вы можете сделать следующее:

class Day < ActiveRecord::Base 
    scope :today, lambda { where('CAST(created_at AS date) = ?', Date.today) } 

И использовать его как это:

@days = Day.today 
# returns a list of `Day` records where the `created_at`'s date is equal to today's date 
Смежные вопросы