ruby 编辑表单未抓取所用值

hmmo2u0o  于 2023-04-20  发布在  Ruby
关注(0)|答案(1)|浏览(74)

我有一个表单(formtastic),它使用Date::DAYNAMES助手在选择框中输出一周中的日期:

days = Date::DAYNAMES
q.input :day,
collection: days,
as: :select

这可以工作并输出从星期天开始的一周中的每一天,但是当涉及到编辑相同的表单时,有问题的字段不记得我以前选择的是哪一天,它只是返回相同的下拉列表(默认为空白字段)。
形式:

# Activity Date/Time Entry
f.inputs class: 'activityDayTime' do
  f.has_many :activity_dates do |q|
    days = Date::DAYNAMES
    if q.object.new_record?
      q.input :day,
              collection: days,
              as: :select
      q.input :time_from
      q.input :time_to
    else
      q.input :day,
              collection: days,
              as: :select
      q.input :time_from
      q.input :time_to
      q.input :_destroy,
              as: :boolean,
              required: :false,
              label: 'Remove Day/Time'
    end
  end
end

如何在编辑表单中告诉表单默认为保存的日期?

编辑

检查数据库后,似乎日期实际上正在保存(显示为nil),因此Date::DAYNAMES保存到日期字段中似乎有问题

编辑2

我已经将日期字段更改为字符串字段,但日期仍然保存为nil。

r8xiu3jd

r8xiu3jd1#

# app/helpers/collection_helper
module CollectionHelper
  def days_collection
    (0..6).map { |wday| [Date::DAYNAMES[wday], wday] }
  end
end

# app/views/posts/_form.html.erb
. . .
  = select_tag :month, options_for_select(days_collection, Time.now.day) # or collection helper
  # simple_form
  = f.input :month, as: :select, collection: days_collection
  # formastic
  = f.input :author, as: :select, collection: days_collection
. . .

说明:

一天在Rails中存储为整数

Post.first.created_at.wday # => 2

因此我们需要将日期名称与其编号相关联

Date::DAYNAMES
=> [ "Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday" ]

我们可以通过代码(它的实现之一)实现这一点

(0..6).map { |wday| [Date::DAYNAMES[wday], wday] }
# => [ [ "Sunday", 0],[ "Monday",1], ["Tuesday", 2], # end etc

这是数组的格式,集合生成器也需要格式和简单的形式。
希望能帮上忙。

相关问题