Ruby on rails Rails虚拟属性错误。语法错误,意外'=';,应为关键字\u end self.send(字段\u名称)=
我在Ruby on rails Rails虚拟属性错误。语法错误,意外'=';,应为关键字\u end self.send(字段\u名称)=,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我在events表中有start\u time:timestamps和finish\u time:timestamps字段。所以我只想在这里储存几小时和几分钟 \u form.html.erb <%= f.time_select :start_time_string %> # Generates methods: start_time_string, finish_time_string # [:start_time, :finish_time].each do |fi
events
表中有start\u time:timestamps
和finish\u time:timestamps
字段。所以我只想在这里储存几小时和几分钟
\u form.html.erb
<%= f.time_select :start_time_string %>
# 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\u time\u string=
和finish\u time\u string=
你可以称之为
start_time_string = Time.now
finish_time_string = Time.now
@科蒂的回答是正确的 然而,您的错误在于另一个事实,即您的
time\u select
字段不是数据库中的time
字段
请看,有许多建议的解决方案。Oopps!!让我们看看OP的反应。你用答案打败了我,但我一直在看。:)你继续。。我要去。。感到困倦。:)它不起作用<代码>1多参数属性赋值错误[赋值错误[2014,3,5,22,45]开始时间字符串(未定义的方法'klass'用于nil:NilClass)]稍早一点,我为我的
开始时间:时间列设置了时间
类型。但在此之后,不仅时间存储在数据库中,而且年、月、日也存储在数据库中。所以我在这里发现了同样的问题:。建议之一是将列类型更改为时间戳
。是的,使用:datetime
或:timestamp
。
start_time_string = Time.now
finish_time_string = Time.now