group_by按日发布,然后日期与不同的div

时间:2014-11-30 20:05:55

标签: ruby postgresql ruby-on-rails-4

我在index的{​​{1}}行动中有以下内容:

posts controller

在我看来像:

@posts = Post.all.order("created_at DESC")

我希望按天分组帖子,然后将日期分组如下:

<% @posts.each do |post| %>
  <%= post.title %>
<% end %>

我只想把日期和日期放在单独的div中:

Tuesday (date)
Sports
World
Politics

Monday (date)
Sports
Catering

我正在使用PostgreSQL。

更新

create.js.erb

 (<div>
    <%= day %>
  </div>
  <div>
    <%= date %>
  </div>)

posts_controller:

$("#post_table").html("<%= escape_javascript(render('posts/post')) %>")
$modal.modal("hide");

index.html.erb

before_action :all_posts, only: [:index, :new, :create]

  def create
    @post = Post.new(post_params)
    @post.user_id = current_user.id

    respond_to do |format|
      if @post.save
        format.html { redirect_to root_path }
        format.js
        flash[:notice] = "Successfully created post."
      else
        format.html { render action: 'new' }
        format.js
      end
    end
  end



 private

    def all_posts
      @posts = Post.all.order("created_at DESC")
      @post_groups=@posts.group_by{|post| [post.created_at.wday,post.created_at.to_date]}
    end

更新工作正常,但每当创建新帖子时,刷新部分都无法正常工作。它刷新但我在重新加载我的网站后可以看到新帖子。

由于

1 个答案:

答案 0 :(得分:1)

控制器

  @post_groups=Post.order('created_at DESC').group_by{|post| [post.created_at.wday,post.created_at.to_date]}

查看

    <% @post_groups.each do |group,posts| %>
    <%day=group[1].strftime("%A")%>
    <%date=group[1].to_s%>
    <div>
      <%=day%>
    </div>

    <div>
      <%=date%>
    </div>
    <br>

    <%posts.each do |post|%>
        <div><%=post.title%></div>
    <%end%>
    <hr>
    <% end %>

在这里,我按工作日对所有帖子进行分组,然后将它们与日期分组。 这将返回所有分组数据的hash。 hash key将是一个格式数组 [weekday,date]和此键的值将是一组帖子来到这个组,我在视图中显示它们。 您可以根据自己的要求调整视图以改变样式。

相关问题