Ruby on Rails - показывать только текущие и будущие месяцы в хелпере - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть этот помощник, который показывает месяцы и годы из модели событий в выбранном входе. Как я показываю только текущие и будущие месяцы, а не прошедшие месяцы?

def select_month_tag(events)
  html = <<-HTML
  <select id="filtro-mes-ano" class="event-filter selectCustom2 event_filter_select">
    <option value="Filtrar por mês" disabled selected >Filtrar por mês</option>
  HTML

  events.each do | event |
    if not date_and_month(event.month_ref, event.year_ref).blank?
      html += <<-HTML
        <option data-year="#{event.year_ref}"
          data-month="#{event.month_ref}"
          "#{'selected' if is_hash_selected?(event)}">
          date_and_month(event.month_ref, event.year_ref)}
        </option>
      HTML
    end
  end

  html += <<-HTML
  </select>
  HTML

  html.html_safe
end

Спасибо.

Ответы [ 2 ]

0 голосов
/ 28 апреля 2018

Почему бы не отфильтровать коллекцию Event, а затем создать параметры с этим? Я не думаю, что вы хотите так много логики в помощнике. Было бы лучше сделать область действия на модели и использовать ее. Что-то вроде

Event.where('date > ?', date_variable_here)

Можете ли вы сделать больше, чем сравнение по дате в поиске в Rails 3?

0 голосов
/ 27 апреля 2018

Полагаю, вы сделаете что-то подобное для написанного вами кода. Дайте мне знать, если это работает для вас

def select_month_tag(events)
  html = <<-HTML
  <select id="filtro-mes-ano" class="event-filter selectCustom2 event_filter_select">
    <option value="Filtrar por mês" disabled selected >Filtrar por mês</option>
  HTML

  events.each do | event |
    if not date_and_month(event.month_ref, event.year_ref).blank?
      # Get today's date
      today = Date.today

      # check if event year is greater than present date's year
      if event.year_ref >= today.year

        # check if event month is greater than present date's month
        if event.month_ref >= today.month # considering month_ref is a number between 1..12
          html += <<-HTML
            <option data-year="#{event.year_ref}"
              data-month="#{event.month_ref}"
              "#{'selected' if is_hash_selected?(event)}">
              date_and_month(event.month_ref, event.year_ref)}
            </option>
          HTML
        end
      end
    end
  end

  html += <<-HTML
  </select>
  HTML

  html.html_safe
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...