0

我正在尝试将 :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#finish 中的 TypeError - 无法将字符串转换为精确数字”

:total_time 是一个整数 :start_time 和 :end_time 是日期时间

我对 Rails 还很陌生,如果答案很明显,我很抱歉,并在此先感谢。

4

1 回答 1

1

您需要将 @a_hill 的 start_time 转换为 Datetime 对象,尝试@a_hill.start_time.to_datetime 甚至更好地将 Ahill 对象更改为在 start_time 属性中包含 datetime 对象。

于 2013-09-23T11:55:40.003 回答