ruby-on-rails - 如何将表单中的两个字段合并为模型中的一个字段

标签 ruby-on-rails ruby-on-rails-3 simple-form fields-for

我有一个 datetime 类型的列 start,我想将其显示为文本字段(以添加日期选择器)和 time_select。我尝试了不同的方法,其中一种是使用 fields_for/simple_fields_for。

<%= f.simple_fields_for :start do |start| %>
  <%= start.input :date, :as => :string, :input_html => { :class => 'datepicker'} %>
  <%= start.input :time, :as => :time, :minute_step => 5, :input_html => { :class => 'input-small'}  %>
<% end %>

如何将这两个字段转换为模型中所需的日期时间列? 或者是否有更好的方法来在与数据库中的一个字段匹配的表单中显示两个字段?

最佳答案

您必须在 Controller 中解析单独的参数并将它们组合起来以生成日期时间。

我建议制作一个名为 StartTime 的模型来解析它

...app/models/start_time.rb

class StartTime
  extend ActiveModel::Naming

  attr_accessor :date, :time

  def initialize(date, time)
    @date = date.is_a?(String) ? Date.parse(date) : date
    @time = time
  end

  def to_timestamp
    # parse @date and @time into Datetime

end

Chronic 是一个有用的 gem,用于从字符串中解析日期/时间

希望对你有帮助

关于ruby-on-rails - 如何将表单中的两个字段合并为模型中的一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10439695/

相关文章:

ruby-on-rails - rails : How to run `rails generate scaffold` when the model already exists?

ruby-on-rails - Rails Amazon S3 如何创建文件上传进度条?

ruby - 使用 SimpleForm 上传 CarrierWave;为什么 "remote_image_url"和 "image"保存到同一数据库列?

ruby-on-rails - rake Assets :precompile attempting to connect to database

ruby-on-rails - rails : if has_many relationship changed

datepicker - 将 simple_form 日期输入更改为具有三个字符串输入而不是三个下拉菜单

ruby-on-rails - CanCan之间的区别:read and [:index, :show]?

ruby-on-rails - 生成为 ActiveRecord::Relation 的 Rails 缓存键

ruby-on-rails - Rails/ActiveRecord - AdapterNotSpecified,即使它是

ruby-on-rails - 我无法在 Netbeans 7.0 上创建 Rails 应用程序。它卡在点 25%