Ruby on rails RubyonRails时间助手
我正在开发我的第一个Rails应用程序。我有点被时间卡住了。我正在开发一个配方应用程序。我需要添加两个字段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
- 准备时间
- 烹饪时间
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...