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 に答える