2010-04-30 4 views
0

У меня есть два поля: 'from_date' и 'to_date' на моей форме рельсов. Когда пользователь вводит даты, я должен отображать количество рабочих дней, то есть исключать (сидеть, солнце и список других официальных праздников в таблице базы данных).вычислить количество рабочих дней на форме рельсов

Это что-то, что должно быть сделано на стороне клиента javascript Или это то, что нужно сделать, сделав запрос ajax на рельсы.

Можете ли вы рассказать мне, как я могу это сделать.

спасибо большое.

ответ

1

В зависимости от того, как часто эта функция будет использоваться, я бы предпочел сделать то же самое, создать .js-файл (или генерировать динамически и просто убедиться, что рельсы кэширует его), и попробовать его с помощью javascript локально для мгновенного удовлетворения. Затем убедитесь, что это правильно на стороне сервера при сохранении.

Восходящий потенциал, делая это как на клиенте, так и на сервере, заключается в том, что вы можете сэкономить немного хлопот, когда парень может видеть его прямо на сайте, не делая запроса. Но если у них отключен javascript, он все равно будет работать. И если это важно, вы никогда не должны доверять тому, что вы получаете из веб-формы. :)

+0

Мне нужно отобразить количество рабочих дней для пользователя перед отправкой формы. Если я использую js на стороне клиента, как мне получить список праздников из базы данных. Вы предлагаете сделать запрос ajax с помощью помощника контрольного элемента register_field. Выполнение расчета в рубине или js перед отображением пользователю. Некоторый пример кода будет полезен. – user290870

+0

Я предлагаю вам в вашем недопустимом методе индекса контроллеров даты вернуть все недопустимые даты как JSON или аналогичные. На странице/контроллере вам нужно рассчитать рабочие дни, убедитесь, что вы включили этот JSON-файл и привяжите его к массиву. Затем сверните все даты в вашем диапазоне и сопоставьте их с этим массивом и днями, которые являются выходными. Преимущество в том, что вы можете кэшировать недопустимые даты, но все еще иметь их в базе данных, легко меняться. Но вам также не нужно запрашивать базу данных/рельсы каждый раз, когда кто-то должен вычислять дни, если они имеют javascript. :) – gaqzi

+0

Спасибо. Все еще неясно по нескольким пунктам. 1. Когда я могу вызвать действие 'index' контроллера invalid_dates, чтобы вернуть представление index.json. Я делаю это на событии «размытия» полей ввода даты или на document.onload 2. «Цикл через даты в вашем диапазоне ...» - это код javascript или код ruby, на который вы ссылаетесь? спасибо. – user290870

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