所以我有rails应用程序所有帖子都显示在/ posts上,这是我想要的地方。在那里,我每页有10个帖子。但是,随着这个页面 - 我想采取最后三个帖子,并在根页面的div中显示它们。
不知道从哪里开始。
由于
答案 0 :(得分:1)
试试这个:
%div
-Post.last(3).each do |p|
%h1= p.title
%p= p.author
%p= p.content
Post.last(3)
会返回您要查找的最后3个帖子。希望这会有所帮助。
P.S。您可能希望通过将Post.last(3)
移动到控制器中的变量(例如@latest_posts = Post.last(3)
)并重复该变量来重构此操作。
答案 1 :(得分:1)
last
finder方法将按升序返回结果。如果您想按降序排列created_at
排序的结果,请按照以下方法(包括单元测试)。
应用/模型/ post.rb 强>
class Post < ActiveRecord::Base
def self.recent(max = 3)
limit(max).order(created_at: :desc)
end
end
<强>规格/模型/ post_spec.rb 强>
RSpec.describe Post, type: :model do
describe ".recent" do
it "returns the most recent" do
first_post = Post.create(created_at: 3.days.ago)
second_post = Post.create(created_at: 2.days.ago)
third_post = Post.create(created_at: 1.day.ago)
result = Post.recent(2)
expect(result).to eq([third_post, second_post])
end
end
end
在您的控制器中:
@recent_posts = Post.recent
在您看来:
<div id="recent-posts">
<ul>
<% @recent_posts.each do |post| %>
<li><%= post.title %></li>
<% end %>
</ul>
</div>
如果您想重复使用视图代码,请将其放入局部视图并在视图中进行渲染。