我想制作一些特定日期的演出文章。 我有
<% date =Date.parse('2014-06-18') %>
<% if feed_item_users.created_at < (date+1).strftime('%Y-%m-%d') && feed_item_users.created_at > date %>
<li id="<%= feed_item_users.id %>">
<span class="content"><%= wrap(feed_item_users.content) %></span>
<span class="timestamp">
Published: <%= I18n.l feed_item_users.created_at, :format => :h %>
</span>
</li>
<% end %>
在我看来,我正在检查日期。 现在我想让date_time选择从我的网站获取日期,例如&#39; 2014-06-18&#39;并在今天制作默认日期。 我知道它应该是这样的:
<%= form_for(??????) do |f| %>
<div class="field">
<%= f.label :published_at %><br>
<%= f.datetime_select :published_at %>
</div>
<% end %>
但我不知道如何让它变量,因为我只需要它一次。
答案 0 :(得分:0)
您在这里将日期与字符串进行比较是不可靠的。在您的红宝石代码中,您应该始终将日期与日期(或时间)进行比较。
你的逻辑似乎是“如果创造的时间大于今天的开始时间而不是明天的开始时间”,可以大致简化为“如果它是今天”。
即你可以替换这个
<% date =Date.parse('2014-06-18') %>
<% if feed_item_users.created_at < (date+1).strftime('%Y-%m-%d') && feed_item_users.created_at > date %>
用这个
<% if feed_item_users.created_at.to_date == Date.today %>
此处记录了datetime_select http://api.rubyonrails.org/classes/ActionView/Helpers/DateHelper.html
答案 1 :(得分:0)
strftime返回字符串,所以当你应用less然后运算符时它就不起作用了。
更好的方法是这样做:
time = Time.new(2014, 06, 18)
if feed_item_users.created_at > time.at_beginning_of_day && feed_item_users.created_at < (time+1.day).at_beginning_of_day