Rails:在视图内部创建一个简单的Timer

时间:2019-02-21 03:04:16

标签: ruby-on-rails

我是编程新手,需要一些帮助来在Ruby on Rails中创建基本计时器,该计时器可以通过在视图中单击按钮来启动和停止。对于每个停止的时间,应将时间条目保存在数据库中到相应的task中。

我实际上不需要代码示例,但是从何处开始有一些帮助(代码会很好。)。

视图如下:

view example

正如我所写,当按下Start按钮时,应该将time-entry(包含开始时间作为UNIX时间戳)保存到数据库中,并属于当前查看的任务。当再次单击Stop时,当前时间应再次保存为UNIX时间戳。再次点击Start,应创建一个新的time-entry,依此类推。

如果可能,我不想使用任何宝石。

谢谢!

1 个答案:

答案 0 :(得分:0)

老实说,有很多方法可以解决这个问题。我建议采用这种(更简单的)方法,该方法还应该教会您Ruby on Rails的所有工作原理。

每按一次按钮,在控制器中更新一次。在 tasks_controller.rb 中创建更新时间的新方法 start_time stop_time 。更新 routes.rb 文件,以便您拥有方法的路径。在视图(在本例中为show.html.erb)中,创建两个重定向到控制器的按钮,如下所示:

<%= link_to "Start", start_time_task_path %> <%= link_to "Stop", stop_time_task_path %>

最后,在控制器方法中,执行类似Task.update(start_time: Time.now)的操作(取决于您的数据库结构。完成了。

另一种方法可能是为 Task 创建两个表单,每个表单代表一个动作。您也可以使用Javascript跟踪时间,并在单击“停止”后一次发送两个时间。

我希望这能回答您的问题。我已经尝试了尽可能少地编写代码,因此,您应该尝试阅读Rails guides或在线观看简单的视频教程,其中展示了MVC流程。