【问题标题】:Truncate only older posts in rails仅截断 Rails 中的旧帖子
【发布时间】:2025-11-29 00:25:02
【问题描述】:

我在这里有一个简单的 do 块,它会截断我在 index.html.erb 上的所有帖子。我想要做的不是截断顶部的最新帖子,而是截断其下方的其余部分,以便页面的大部分是最近的帖子。我知道这对某些人来说可能很容易解决,但我似乎无法弄清楚。帮助将不胜感激。谢谢。

</div>
  <% @posts.each do |post| %>
    <h2 class="title"><%= link_to post.title, post %></h2>
      <p><%= truncate(post.body, :length => 300) %></p>
      <p class="date"><%= post.created_at.strftime("%B, %d, %Y") %></p>
    <% end %>
</div>

【问题讨论】:

  • 离题:在您的视图中格式化日期和时间时,我会避免直接使用strftime;使用I18n.localize 并将您的格式放入config/locals/*.yml 参见guides.rubyonrails.org/i18n.html
  • 我会考虑到这一点。谢谢。无论如何,我可能会将逻辑移出视图。

标签: ruby-on-rails ruby erb truncate


【解决方案1】:

试试这个

<div>
  <% @posts.each_with_index do |post, index| %>
    <h2 class="title"><%= link_to post.title, post %></h2>
    <p><%= index.zero? ? post.body : truncate(post.body, length: 300) %></p>
    <p class="date"><%= post.created_at.strftime("%B, %d, %Y") %></p>
  <% end %>
</div>

【讨论】:

  • 索引的好主意。没想到。谢谢。