按用户引用的日期过滤分页帖子(Rails)

时间:2015-02-04 23:47:47

标签: ruby-on-rails ruby post input blogs

我的post_controller有索引方法,如下所示:

def index
    @posts = Post.paginate(:page => params[:page], :per_page => 3)
end

并在app / views / posts / index.html.erb中我有:

.
.
.
<table>
  <tr>
    <th>User</th>
    <th>Post</th>
    <th>Date</th>
    <th colspan="3"></th>
  </tr>

  <% @posts.each do |post| %>
    <tr>
      <td><%= post.user.id %></td>
      <td><%= post.text %></td>
      <td><%= post.created_at %></td>
      <td><%= link_to 'Show', post_path(post) %></td>
      <% if can? :update, post %>
        <td><%= link_to 'Edit', edit_post_path(post) %></td>
      <% end %>

      <% if can? :destroy, post %>
        <td><%= link_to 'Destroy', post_path(post),
              method: :delete,
              data: { confirm: 'Are you sure?' } %></td>
      <% end %>
    </tr>

  <% end %>
  <%= will_paginate @posts %>
</table>

所以我希望在此视图中有一个字段,用户可以在其中输入日期,视图显示在该日期之后创建的所有帖子。 (帖子日期&gt; date_by_user)。我试过&#34;其中&#34;方法,但我不能。我不想使用任何宝石。那么,最好和最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用索引方法搜索记录,如下所示。

date_to_search = Date.parse('2015/1/1')
Post.where(
  'created_at>=? and created_at<=?', 
  date_to_search.beginning_of_day
)

created_at在rails中保存为UTC,因此您需要指定日期时间。不仅是日期,还能在当地时间获得正确的数据。