Rails将日期变为变量

时间:2014-06-18 09:44:51

标签: ruby-on-rails datetime select

我想制作一些特定日期的演出文章。 我有

<% 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 %>

但我不知道如何让它变量,因为我只需要它一次。

2 个答案:

答案 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