-1

我正在修改其他人的项目,该项目允许用户提交内容以立即发布或预定发布。有一对单选按钮可以选择它,如果选择了“计划”的单选按钮,则由 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 输出,但你看到的只是没有 :scheduled_start(1i) => 2010。它并没有说它是 nil,它只是没有那个参数。

真正让我感动的是,这不是一个一致的问题——我可以在预定日期连续提交三次,然后它就会失败。我无法与特定日期相关联——有些日期似乎比其他日期更混乱,但没有一个是真正一致的。

我尝试的修复-

  • 最初 :include_blank 是真的,我想也许它没有正确发送。无关紧要。

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

  • 尝试使用纯 html 对表单进行硬编码,没有任何区别。

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

我很困惑,如果有人有新的方向,我可以研究一下,那就太好了。谢谢!

4

2 回答 2

0

without seeing the top of your form, i can't tell if you are using a form_for statement, but if not, you may add the object as the first argument

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

api here http://apidock.com/rails/ActionView/Helpers/DateHelper/datetime_select

于 2010-08-19T02:01:50.603 回答
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,因为它像以前一样说“计划开始不能为空白”。

我绝对注意到该错误主要发生在生产中。本地开发失败已经很久了,生产成功也很久了。

感谢您的所有回复。

于 2010-08-19T15:12:26.713 回答