Передача даты из формы - PullRequest
       1

Передача даты из формы

1 голос
/ 21 октября 2011

У меня есть форма, в которой пользователь выберет диапазон дат, а затем отчет будет представлен на основе этого диапазона дат.

Соответствующий бит моей формы Rails выглядит следующим образом ...

<div class="field">
<b>Start Date</b><br />
<%= date_select :startDate, options = {:order => [:day, :month, :year]} %>
</div>

<div class="field">
<b>End Date</b><br />
<%= date_select :endDate, options = {:order => [:day, :month, :year]} %>
</div>

Однако у меня возникают проблемы с выяснением того, как получить доступ к полученным датам в контроллере. Я поставил следующую диагностику в контроллер,

puts params[:startDate]
puts params[:endDate]
puts Date.today

... и это показывает,

orderdaymonthyear(1i)2011orderdaymonthyear(2i)3orderdaymonthyear(3i)21
orderdaymonthyear(1i)2011orderdaymonthyear(2i)10orderdaymonthyear(3i)21
2011-10-21

Мой поиск определяется следующим образом:

SalesActivity.find (: все,: условия => {: made_at => params [: startDate] .. params [: endDate]})

... и это дает исключение, «неверное значение для диапазона».

Буду признателен за указание, как передавать и использовать диапазон дат.

Ответы [ 4 ]

3 голосов
/ 22 октября 2011

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

Однако я нашел это,

http://snippets.dzone.com/posts/show/4630

Что дало мне то, что я искалдля этого мой [теперь работающий] код выглядит так:

@start_date = Date.civil(params[:range][:"startDate(1i)"].to_i,
                         params[:range][:"startDate(2i)"].to_i,
                         params[:range][:"startDate(3i)"].to_i)

@end_date   = Date.civil(params[:range][:"endDate(1i)"].to_i,
                         params[:range][:"endDate(2i)"].to_i,
                         params[:range][:"endDate(3i)"].to_i)

Еще раз спасибо за помощь.

2 голосов
/ 21 октября 2011

Этот ответ объясняет, что это за параметры и как они структурированы.AFAIK на данный момент Rails не предлагает простой способ добавить поддержку многопараметрического присваивания произвольному объекту (что вам и нужно в этом случае).

0 голосов
/ 21 октября 2011

Технически это не ответ на ваш конкретный вопрос, но это решение вашей проблемы.

Рассматривали ли вы использование помощника по выбору даты в календаре javascript?Таким образом, в вашем пользовательском интерфейсе ваш пользователь должен выбрать один из 6 выпадающих списков.Для них может быть проще выбрать 2 из 2 экземпляров календаря.Затем вы получите значение даты начала и окончания в виде строк.

0 голосов
/ 21 октября 2011
Try SalesActivity.all.where("created_at > ? AND created_at < ?", params[:startDate], params[:endDate])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...