Я вижу две проблемы, хотя я не знаком с библиотекой календаря.
Сначала убедитесь, что ваш запрос в контроллере возвращает что-то полезное.Из трех строк, которые вы нам дали, первая даже не выполняет поиск, она вызывает методы для неопределенной переменной.Вторая близка к работе, но вы ищете дату и сопоставляете ее с истинной ... Как насчет:
@users = User.joins(:event).where('events.event_date is not null')
Кроме того, если у вас есть диапазон дат, вы можете включить его в поиск:
@users = User.joins(:event).where('events.event_date > ? and events.event_date < ?', start_date, end_date)
Далее, вы не согласны с именами переменных.Контроллер устанавливает переменную @users, к которой вы обращаетесь один раз, но потом вы пропускаете @ перед ней, что не то же самое.Я не знаю, что часть календаря хочет получить в качестве входных данных, но по крайней мере цикл for должен быть:
for user in @users
Тем не менее, циклы не очень рубиновые.Рубиновый способ - использовать each
:
@users.each do |user|
...
end
или даже лучше, чтобы сделать все ваши ссылки:
<ul>
<%= @users.collect {|user| content_tag(:li, link_to h(user.name), user).join } %>
</ul>
edit
Основываясь на дополнительной информации, я думаю, что вы начинаете не с того места.Начнем с событий.
Event.joins(:users).where('events.event_date is not null')
<% calendar_for @events, :year => @date.year, :month => @date.month do |calendar| %>
<%= calendar.head('Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday') %>
<% calendar.day(:day_method => :event_date) do |date, events| %>
<%= date.day %>
<ul>
<% for event in events %>
<li><%= link_to h(event.user.name), event.user %></li>
<% end %>
</ul>
<% end %>
<% end %>