好的,我正在慢慢掌握这一点,但我还需要一些帮助。
我在视图中使用了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个下拉:hh
:mm
am/pm
。
所以问题是:如何调整我的composed_of method
以便插件正确转换它?或者这种疯狂有更好的方法吗?
我不确定我需要什么映射器/构造器/转换器。现在,对象保持小时和分钟,除了小时没有转换为24小时(插件应该照顾,我想)。
答案 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,但是当我开始工作时我会更新它。