Ruby on Rails时间输入/超时记录

bri*_*ulp 2 activerecord ruby-on-rails ruby-on-rails-3

我试图在名为'timeclock'的模型上记录'time_in'和'time_out'记录.这是我想要做但却无法开始工作!

  1. 检查最后一个时钟输入并查看是否同时填写了'time_in'和'time_out'记录.如果是,则创建一个新记录(如下所示):

    form_for([@employee, @employee.timeclocks.build]) do |f|
    
      f.hidden_field :time_in, :value => @current_time 
    
      f.submit "Clock In"
    
    end
    
  2. 如果已经有一个不完整的时钟记录(有'time_in'记录但没有'time_out'记录,则渲染表格或更新最后一条记录.

我已经能够将时间记录记录到数据库中,但从不在相同的数据记录中,如下所示:http://cl.ly/E0Rg(图像)

那有意义吗?如果您需要一些澄清问题,请不要犹豫!谢谢!

小智 6

使用您提供的代码,您始终创建新记录,因为@ employee.timeclocks.build用于创建记录.

如果你想要更新记录,你应首先获取它,然后在form_for方法中传递此记录

要获取记录,请使用@ employee.timeclocks.find fappropriate where子句来获取要更新的记录

form_for([@employee, @timeclock]) do |f|

  f.hidden_field :time_in, :value => @current_time 

  f.submit "Clock In"

end
Run Code Online (Sandbox Code Playgroud)

在你的控制器中设置@timeclock或者使用新记录或者你想要更新的记录