ruby-on-rails - (Ruby on Rails) 将帖子按 3 组显示

标签 ruby-on-rails

我正在使用以下代码向我的用户显示帖子。

_feed.html.erb部分:

<% @posts_by_month.each do |monthname, posts| %>
<%= monthname %>
<ul>
   <% posts.each do |post| %>
     <li><%= post.created_at %></li>
   <% end %>
</ul>
<% end %>

Controller :

  def home
    if logged_in?
      @post  = current_user.posts.build
      @posts_by_month = current_user.feed.group_by { |post| post.created_at.strftime("%B") }

这使得我的帖子如下:

Post 1
Post 2
Post 3
Post 4

我想更改它,以便帖子显示如下:

Post 1         Post 2       Post 3
Post 4         etc          etc
etc

我已经尝试了几种方法,包括 in_groups_of(3) 方法,但是当前的设置方式意味着没有任何效果。我觉得我缺少一个明显的解决方案 - 有人可以帮忙吗?

[编辑以扩展 in_groups_of(3) 错误]

如果我将 _feed 部分中的第 4 行更改为:

<% posts.in_groups_of(3, false).each do |post| %>

它给出了错误:#的未定义方法`created_at'

最佳答案

#in_groups_of 方法返回一个数组数组,每个数组包含 3 个 Post 对象。 因此,您现在还需要迭代包含三个帖子的返回数组,例如:

<% posts.in_groups_of(3, false).each do |post_group| %>
   <% post_group.each do |post| %>
     <li><%= post.created_at %></li>
   <% end %>
<% end %>

关于ruby-on-rails - (Ruby on Rails) 将帖子按 3 组显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43971271/

相关文章:

ruby-on-rails - 清关:修改用户密码

javascript - Application.js 超过 1 Mb Rails

jquery - Rails 3 respond_to 不响应

ruby-on-rails - 我如何使用ruby将字节转换为base64

ruby-on-rails - 从 rails 中的 Controller 渲染部分

ruby-on-rails - 设计:可内存意味着last_sign_in_at不会由可跟踪的对象更新

ruby-on-rails - :include_blank and :prompt in the Rails select helper? 和有什么区别

javascript - 你如何在 Rails 中改变背景?

ruby-on-rails - rails : link_to into another controller with params

ruby-on-rails - Rabbitmq AMQP 和 DaemonSet