Ruby on Rails - 多参数赋值和attr_accessor以及12_hour_time

时间:2011-05-17 22:38:58

标签: ruby-on-rails attr-accessor

好的,我正在慢慢掌握这一点,但我还需要一些帮助。

我在视图中使用了time_select,因此我正在处理多参数分配。校验。

<%= pt.time_select :time, :twelve_hour => true, :minute_step => 5 %>

但我正在做顽皮的事情并将其与不在数据库中的属性一起使用:

attr_accessor time

因此,由于它无法查看数据库,因此无法将多参数分配的内容拼凑在一起,因此我收到以下错误:

1 error(s) on assignment of multiparameter attributes

因此,我使用的信息是here

  composed_of :time,
            :class_name => 'DateTime',
            :mapping => [%w(DateTime to_s)],
            :constructor => Proc.new{ |item| item },
            :converter => Proc.new{ |item| item }

其他有用的链接:rubyonrails.org | apidock.com

这删除了错误,但现在问题是我正在使用的插件无法正常运行,我想。我正在使用http://code.google.com/p/rails-twelve-hour-time-plugin/。目标是,我正在尝试让时间选择有3个下拉:hhmm am/pm

所以问题是:如何调整我的composed_of method以便插件正确转换它?或者这种疯狂有更好的方法吗?

我不确定我需要什么映射器/构造器/转换器。现在,对象保持小时和分钟,除了小时没有转换为24小时(插件应该照顾,我想)。

1 个答案:

答案 0 :(得分:5)

问题是我没有正确地遵循这篇文章。我应该一直使用时间模型。

  composed_of :time,
            :class_name => 'Time',
            :mapping => [%w(Time to_s)],
            :constructor => Proc.new{ |item| item },
            :converter => Proc.new{ |item| item }

看起来这是一个常见问题。有关它的更多信息,请查看此link。给出的建议是:

class Whatever < ActiveRecord::Base
  ...

  attr_accessor :arrival_time
  columns_hash["arrival_time"] = ActiveRecord::ConnectionAdapters::Column.new("arrival_time", nil, "time")
end

我还在制作bug,但是当我开始工作时我会更新它。