Rails непоследовательно не передает параметры datetime - PullRequest
0 голосов
/ 18 августа 2010

Я пересматриваю чужой проект, который позволяет пользователям отправлять контент для немедленной или запланированной публикации. Есть пара радиокнопок, чтобы выбрать это, и поле даты и времени, которое активируется JavaScript, если радиокнопка для «запланировано» выбрана

<%= f.hidden_field :scheduled_state %>
<%= f.radio_button :immediate_or_scheduled, :immediate, :checked => "checked", :id => "pub_imd" %>

<%= f.radio_button :immediate_or_scheduled, :scheduled , :id => "pub_sch" %>
        <label>Date/Time:</label>

        <%= f.datetime_select :scheduled_start,
                              {:include_blank => false,
                                :default => 3.days.from_now,
                                :start_year => Time.now.year} %>

Мне не совсем понятно, для чего предназначено скрытое поле, это мой следующий пункт исследования. В любом случае, проблема в том, что когда форма отправляется, иногда параметры просто не передаются. Я бы скопировал вывод mongrel, но все, что вы видите, это то, что его нет: schedule_start (1i) => 2010. Он не говорит, что это ноль, у него просто нет этого параметра.

Что меня действительно волнует, так это то, что это не является постоянной проблемой - я могу отправить три раза подряд с запланированной датой, и тогда произойдет ошибка. Я не смог соотнести их с конкретными датами - некоторые, кажется, испортили больше, чем другие, но ни одна не соответствует действительности.

Мои попытки исправить-

  • Первоначально: include_blank получил значение true, и я подумал, что, возможно, он отправлял неправильно. Был неактуален.

  • Попытка выключить JavaScript, который отключил / включил поле выбора, но не имел отношения к делу.

  • Попробовал жесткое кодирование формы с использованием чистого HTML, без разницы.

  • Попробовал положить в собственные рейки select_tags для моих собственных параметров, затем забрать их в контроллере и добавить их в параметры. Все еще не помогло, и сломал возможность немедленной публикации.

Я довольно сильно озадачен, если у кого-то есть новое направление, которое я могу исследовать, это было бы замечательно. Спасибо!

Ответы [ 2 ]

0 голосов
/ 19 августа 2010

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

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

@scheduled_start_hack = "#{params[:press_release][:"scheduled_start(2i)"]}.#{params[:press_release][:"scheduled_start(3i)"]}.#{params[:press_release][:"scheduled_start(1i)"]} - #{params[:press_release][:"scheduled_start(4i)"]}:#{params[:press_release][:"scheduled_start(5i)"]}#{@meridian}"

@press_release = PressRelease.new(params[:press_release])

@press_release.scheduled_start = @scheduled_start_hack

В этом фрагменте есть куча условных выражений, которые я не удосужился опубликовать, поэтому он не делал этого, если что-то не было определено или не предполагалось, что это запланированное начало или форматирование, и т. Д. чтобы вывести @scheduled_start_hack правильно отформатированный, но он все равно отклонил @ press_release.save, потому что он сказал, что «Запланированный запуск не может быть пустым», как раньше.

Я определенно заметил, что ошибка происходит в основном на производстве. Прошло много времени с тех пор, как не удалось пройти через местное развитие, и прошло много времени с тех пор, как один успешно прошел через производство.

Спасибо за все ваши ответы.

0 голосов
/ 19 августа 2010

не видя верхней части вашей формы, я не могу сказать, используете ли вы оператор form_for, но если нет, вы можете добавить объект в качестве первого аргумента

f.datetime_select 'post', 'scheduled_start', {options hash here}

API здесь http://apidock.com/rails/ActionView/Helpers/DateHelper/datetime_select

...