Ruby on rails RubyonRails时间助手

Ruby on rails RubyonRails时间助手,ruby-on-rails,ruby,timer,form-helpers,recipe,Ruby On Rails,Ruby,Timer,Form Helpers,Recipe,我正在开发我的第一个Rails应用程序。我有点被时间卡住了。我正在开发一个配方应用程序。我需要添加两个字段 准备时间 烹饪时间 在这两个字段中,我想将这两个字段相加,得出准备这顿饭所需的总时间 我采用了错误的方法,没有逻辑:(.基本上我有两个字段,我使用f.select来选择预定义的时间。但这种方法的问题是,当添加这两个字段时,它忽略了公历格式,例如40分钟+50分钟将变为90分钟,而不是1小时30 我将感谢社区的任何帮助。一个简单的例子: prep_time = 40.minutes co

我正在开发我的第一个Rails应用程序。我有点被时间卡住了。我正在开发一个配方应用程序。我需要添加两个字段

  • 准备时间
  • 烹饪时间
在这两个字段中,我想将这两个字段相加,得出准备这顿饭所需的总时间

我采用了错误的方法,没有逻辑:(.基本上我有两个字段,我使用f.select来选择预定义的时间。但这种方法的问题是,当添加这两个字段时,它忽略了公历格式,例如40分钟+50分钟将变为90分钟,而不是1小时30

我将感谢社区的任何帮助。

一个简单的例子:

prep_time = 40.minutes
cook_time = 50.minutes

total_time = prep_time + cook_time
formatted_total_time = Time.at(total_time).gmtime.strftime('%I:%M')

# outputs 01:30 which is HOURS:MINUTES format
如果您想要90分钟:

formatted_total_time = total_time / 60

# outputs 90

更新:

将其放入与您在其中使用的任何视图相关联的帮助文件中(即
app/helpers/recipes\u helper.rb

然后在视图中调用它(即
app/views/recipes/show.html.haml
类似:

# Note: this is HAML code... but ERB should be similar

%p.cooking_time
  = convert_to_gregorian_time(@recipe.prep_time, @recipe.cook_time)
如果在数据库中以整数形式存储时间(您应该这样做),则可以执行以下操作:

%p.cooking_time
  = convert_to_gregorian_time(@recipe.prep_time.minutes, @recipe.cook_time.minutes)
其中,
@recipe.prep_time
是一个值为40的整数,
@recipe.cook_time
是一个值为50的整数

而您的数据库架构将类似于:

# == Schema Information
#
# Table name: recipes
#
#  id                 :integer         not null, primary key
#  prep_time          :integer
#  cook_time          :integer
#  # other fields in the model...

你到底是如何将这些值存储在数据库中的?一个包含分钟数的整数?我听到了你说的话,但是我是否使用了时间助手。我如何实现上面的代码?请参阅更新答案。你基本上只需创建自己的助手函数,然后在视图中调用它。我尝试了这个方法,但得到了以下结果。'Unfi'ned方法“/”表示“40.minutes50.minutes”:String“,然后当我删除/60时,我会在页面上打印这两个字符串。这是因为你没有按照我显示的方式输入准备和烹饪时间。使用
50.minutes
是表示时间的Ruby方法,因此如果你将它们作为字符串输入,表示“50.minutes”了解这些事情的最好方法是进入Rails控制台(在终端/命令提示符处键入
Rails c
)然后开始在上面输入代码你所做的基本上是创建了两个字符串,然后使用
+
…你必须像上面显示的那样声明时间。
prep\u time=40.minutes
不是
prep\u time=“40.minutes”
。两者之间有很大的区别
# == Schema Information
#
# Table name: recipes
#
#  id                 :integer         not null, primary key
#  prep_time          :integer
#  cook_time          :integer
#  # other fields in the model...