В приложении rails, как получить разницу дней в дате записей каждого цикла. У меня есть поле с именем date, и я хочу извлечь разницу дней между датой записи.
<div id="searchResult">
<table class="table">
<thead>
<tr>
<th>Guard Name</th>
<th>Client Name</th>
<th>Salary</th>
<th>Transfer Date</th>
<th>Days</th>
</tr>
</thead>
<tbody>
<% @search.each do |f| %>
<tr>
<td><%= f.guard.try(:name) %></td>
<td><%= f.client.try(:name) %></td>
<td><%= f.sallary %></td>
<td><%= f.date.strftime("%Y-%b-%d") %></td>
<td>Date Difference</td>
</tr>
<% end %>
</tbody>
</table>
</div>
Существует временное различие
вы можете получить его как:
<div id="searchResult">
<table class="table">
<thead>
<tr>
<th>Guard Name</th>
<th>Client Name</th>
<th>Salary</th>
<th>Transfer Date</th>
<th>Days</th>
</tr>
</thead>
<tbody>
<% @search.each_with_index do |f, i| %>
<tr>
<td><%= f.guard.try(:name) %></td>
<td><%= f.client.try(:name) %></td>
<td><%= f.sallary %></td>
<td><%= f.date.strftime("%Y-%b-%d") %></td>
<td><%=TimeDifference.between(@search[i].date,@search[i+1].date).in_years%></td>
</tr>
<% end %>
</tbody>
</table>
</div>
Здесь @search
- это массив, и для массива мы можем получить результат следующим образом:
array[0] - array[1]
это previous_record.date - current_record.date
Я думаю, это должно сработать.
Простой пример
start_time = Time.new(2013,1)
end_time = Time.new(2014,1)
TimeDifference.between(start_time, end_time).in_years
=> 1.0
Если я правильно понял ваш вопрос:
Существует метод each_cons, который выполняет итерацию по N следующим элементам:
records.each_cons(2) do |current, previous|
date_difference = current.date - previous.date
end
time_difference
даетtime_difference
результаты по-разному, вы можете увидеть его doc.any спасибо.