2013-07-06 2 views
1

Я пытаюсь изучить RoR и получить следующий код. Я только думаю, что это может быть намного проще. То, что я понимаю из RoR, заключается в том, что вы должны стараться не повторять и делать все как можно проще. Поэтому, возможно, у кого-то есть советы:Rails 3. Я думаю, что это должно быть намного проще

if params[:select_date].present? 
    if params[:select_date] == '1' 
    params[:search][:date_started_at_gte] = Date.today.beginning_of_month 
    end 
    if params[:select_date] == '2' 
    params[:search][:date_started_at_gte] = Date.today - 1.months 
    end 
    if params[:select_date] == '3' 
    params[:search][:date_started_at_gte] = Date.today - 3.months 
    end 
    if params[:select_date] == '0' 
    params[:search][:date_started_at_gte] = params[:search][:date_started_at_gte] 
    params[:search][:date_started_at_lte] = params[:search][:date_started_at_lte] 
    end 
else 
    params[:search][:date_started_at_gte] = Date.today.beginning_of_month 
    params[:search][:date_started_at_lte] = Date.today 
end 

Спасибо!

ответ

0
gte = lte = '' 

case params[:select_date] 
when '1' 
    gte = Date.today.beginning_of_month 
when '2' 
    gte = Date.today - 1.months 
#... 
when '0' 
    gte = params[:search][:date_started_at_gte] 
    lte = params[:search][:date_started_at_lte] 
else 
    gte = Date.today.beginning_of_month 
    lte = Date.today 
end 

Здесь я использовал несколько новых переменных gte, lte. Я настоятельно рекомендую вам не изменять значение параметров!

+0

Hi Billy. Благодаря! Почему вы не хотите менять параметры? Какова может быть проблема с этим? – Jerry

+0

@ user1640644, параметр означает, что получить от запроса. Изменение источника информации не является хорошей практикой, когда вы можете легко использовать любую переменную для их обработки. –

+0

Ну, что, если я не изменю параметры, у меня возникла новая проблема: я запускаю контроллер с помощью: params [: search] [: date_started_at_gte] = Date.today.beginning_of_month. Поэтому, если я не изменю параметры, как я могу начать с Date.today при запуске? – Jerry

Смежные вопросы