mysql - 在顶部显示当前日期的值,然后是其他日期

标签 mysql ruby-on-rails ruby erb

我可以根据餐厅 ID 从表中获取行列表。例如

SELECT id, start_time, end_time, day FROM restaurant_timings WHERE restaurant_id = 2

输出看起来像

1 6:00am 7:00pm Sunday
2 6:00am 5:00pm Monday
3 6:00am 4:00pm Tuesday
4 6:00am 7:00pm Wednesday
5 6:00am 9:00pm Thursday
6 6:00am 6:00pm Friday
7 6:00am 7:00pm Saturday

这些结果在数组@timings 中返回。现在,在前端,我想根据当天显示这些结果。话虽如此,如果今天是星期三,那么我需要在顶部显示星期三之后是所有其他日子。我正在使用循环来执行此操作。这是循环代码:

<% @timings.each do |val| %>
<tr>
   <td><%= val['day_name'] %></td>
   <td>
      <div class="form-group">
         <div class='input-group date datetimepicker1' id='datetimepicker1'>
            <input type='text' class="form-control editabletext" name="openingtime[]" value="<%= if val['opening_time'].present? then val['opening_time'].strftime("%m/%d/%Y %I:%M %p") end %>" readonly/>
            <span class="input-group-addon"><span class="glyphicon glyphicon-calendar icon-calendar"></span>
            </span>
         </div>
      </div>
   </td>
</tr>
<% end %>

我应该/可以修改 SQL 查询以不使前端代码变得复杂吗?关于如何执行此操作的任何想法?

最佳答案

在这种特殊情况下修改后端代码更容易:

@timings = ActiveRecord::Base.connection.execute %|
  SELECT id, start_time, end_time, day
  FROM restaurant_timings
  WHERE restaurant_id = 2|

until Date.today.public_send("#{@timings.first.day.downcase}?") do
  @timings.rotate!
end

或者,甚至更好:

@timings.rotate!(Date.parse(@timings.first.day).wday - Date.today.wday)

关于mysql - 在顶部显示当前日期的值,然后是其他日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41952120/

相关文章:

mysql - 更改 SQL 数据库服务器

ruby - 如何在Ruby中正确编写代码?这样它就会产生正确的输出?

ruby - 在覆盖 super 的同时仍然返回 super 时,如何有条件地执行某些操作?

ruby - 在 Ruby 中将成对的数组元素混合在一起的最佳方法

mysql - MySQL 不支持 FULL OUTER JOINS 有什么原因吗?

mysql - 什么时候使用mysql_real_escape_string?

php - 尝试从 mysql 获取上个月的数据

ruby-on-rails - link_to、redirect_to 和 render 之间有什么区别?

ruby-on-rails - Ubuntu |乘客 | Rails - 找不到 rake-0.9.2

ruby-on-rails - 如何使用 Minitest 在设置方法中 stub ?