Rails不一致地无法发送datetime参数

时间:2010-08-18 14:45:37

标签: ruby-on-rails ruby datetime parameter-passing form-helpers

我正在修改其他人的项目,该项目允许用户提交即时或预定发布的内容。有一对单选按钮可以选择此项,如果选择了“预定”的单选按钮,则可以通过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} %>

我不完全清楚隐藏的领域是什么,这是我的下一个调查点。无论如何,问题在于提交表单时,有时参数不会被提交。我会复制杂种输出,但你看到的是没有:scheduled_start(1i)=&gt; 2010.它没有说它是零,它只是没有那个参数。

真正让我感觉的是它不是一个一致的问题 - 我可以连续三次提交正确的预定日期然后它会失败。我无法与具体日期相关联 - 有些似乎比其他日期更糟糕,但没有一个真正一致。

我尝试修复 -

  • 最初:include_blank成真,我想也许它发送不正确。无关紧要。

  • 尝试关闭禁用/启用了选择字段的JavaScript,但是无关紧要。

  • 尝试用纯HTML格式编写表单,没有任何区别。

  • 尝试为我自己的参数添加自定义rails select_tags,然后在控制器中选择它们并将它们添加到参数中。仍然没有帮助,并打破了即时出版选项。

我非常难倒,如果有人有新的方向我可以检查一下会很棒。 谢谢!

2 个答案:

答案 0 :(得分:0)

没有看到表单的顶部,我无法判断您是否正在使用form_for语句,但如果没有,您可以将该对象添加为第一个参数

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

这里是api http://apidock.com/rails/ActionView/Helpers/DateHelper/datetime_select

答案 1 :(得分:0)

我是原创海报,但我无法发表评论,因为我最初是以未注册的用户身份发布的。如果某个管理员可以将此评论做得很好。

好的,我查看了网络窗格,即使它失败了,它仍然是在帖子请求中从表单发送参数。我正在使用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,因为它表示“预定启动不能像以前一样空白”。

我肯定注意到错误主要发生在生产中。自从一个人成功地进行生产以来,已经很长一段时间没有经历过地方发展。

感谢您的所有回复。