我试图将total_time设置为2个日期时间项(:start_time和:end_time)之间的差异,以秒为单位。通过执行以下操作,我可以在视图中获得我想要的值
<%= (@result.end_time.minus_with_coercion(@result.start_time)).round %>
但是现在我需要在控制器中创建@result时使用此值填充:total_time - 我尝试了以下内容:
def finish
@a_hill = AHill.find(params[:hill_id])
@finish_time = Result.create(:user_id => params[:user_id], :a_hill_id => params[:hill_id], :start_time =>@a_hill.start_time, :end_time=>Time.now, :total_time=>(Time.now.minus_with_coercion(@a_hill.start_time)).round)
if @finish_time.save
redirect_to(:action => "race", :id =>params[:hill_id] , :hill_id =>params[:hill_id])
end
end
或关注其主要部分:
:total_time=>(Time.now.minus_with_coercion(@a_hill.start_time)).round
但我得到了错误
“AHillsController中的TypeError#finish - 无法将String转换为确切的数字”
:total_time是一个整数:start_time和:end_time是日期时间
我对Rails很陌生,很抱歉,如果答案是非常明显的,并提前感谢。
答案 0 :(得分:1)
你需要的是将@a_hill的start_time转换为Datetime对象try @a_hill.start_time.to_datetime
甚至可以更好地更改AHill对象,使其具有start_time属性中的datetime对象。