我在events
表中有start_time:timestamps
和finish_time:timestamps
字段。所以我只想在这里存储几个小时和几分钟。
_form.html.erb
<%= f.time_select :start_time_string %>
我向模型添加了虚拟属性。
event.rb
# Generates methods: start_time_string, finish_time_string
#
[:start_time, :finish_time].each do |field_name|
define_method("#{field_name}_string") do
self.send(field_name).strftime('%H:%M') if self.send(field_name)
end
end
[:start_time, :finish_time].each do |field_name|
define_method("#{field_name}_string=") do |time|
self.send(field_name) = time.strftime('%H:%M')
end
end
但是我得到了错误:
syntax error, unexpected '=', expecting keyword_end self.send(field_name) = time.strftime('%H:%M') ^
为什么会这样?如果可能的话,你能为我提出一个更好的解决方案吗?
替换
[:start_time, :finish_time].each do |field_name|
define_method("#{field_name}_string=") do |time|
self.send(field_name) = time.strftime('%H:%M')
end
end
跟
[:start_time, :finish_time].each do |field_name|
define_method("#{field_name}_string=") do |time|
self.send("#{field_name}_string=",time.strftime('%H:%M'))
end
end
编辑
这将创建两种方法 start_time_string=
和 finish_time_string=
.
您可以将这些称为,
start_time_string = Time.now
finish_time_string = Time.now
@Kirti的答案是正确的。
但是,您的错误在于另一个事实,即您的time_select
字段不是数据库中的Time
字段。
看到这个相关的问题,有很多建议的解决方案。