2011-01-07 2 views
0

Привет всем, Я использую Rails 3 и хронический жемчуг (для синтаксического анализа даты), и вам нужно создать список воскресений за последние 6 месяцев. Вот что у меня есть до сих пор:Создайте выбранный список воскресений в Rails 3

<% 
    # weeks in 6 months = 26 
    week = 1 
    sunday = Date.parse(Chronic.parse('this sunday').to_s) 
    sunday_array = [] 
    while week <= 26 
    sunday_array << sunday - (week * 7) 
    week += 1 
    end 
%> 
<%= select_tag 'sunday', options_for_select(sunday_array) %> 

Кто-нибудь знает, как это сделать лучше/чище? Благодарю.

ответ

1

Вы можете играть в гольф код с ...

sunday = Date.parse(Chronic.parse('this sunday').to_s) 
sunday_array = [] 
26.times { |i| sunday_array << sunday - (i * 7) } 

И тогда избавиться от магических чисел ....

NUM_SUNDAYS = 26 
sunday = Date.parse(Chronic.parse('this sunday').to_s) 
sunday_array = [] 
NUM_SUNDAYS.times { |i| sunday_array << sunday - (i * 7) } 

И очевидно, вы бы переместить его в вспомогательный метод поэтому он не сидит в вашем ERB. :)

+0

Спасибо Дрю. Мне нужно было сделать NUM_SUNDAYS в нижнем регистре, но это сработало. –

+0

Если вам понравился ответ, рассмотрите вопрос о голосовании (нажав стрелки), и если вы считаете, что это лучший ответ на ваш вопрос, подумайте о принятии ответа, установив флажок. Это позволяет другим людям знать, что на ваш вопрос был дан ответ, и им больше не нужно об этом беспокоиться. :) – Drew