我一直试图在主页上为我的rails博客显示一个随机博客文章。这是我在stackoverflow上的另一篇文章中使用的代码
def index
@post = Post.offset(rand(Post.count)).first
end
对于视图我尝试了@ post.each do | post |的所有内容到<%= @ post%>。并且它仍然没有显示一个随机帖子。
答案 0 :(得分:2)
@post = Post.offset(rand(Post.count)).first
查询会从posts
表格返回单个随机记录,因此您无法在其上调用each
(@post.each
),因为它是不是一个集合。
要在视图中显示该随机帖子,请使用
<%= @post.try(:field_name) %>
将field_name
替换为您要显示的field
表中的posts
。
例如:如果您希望在title
视图中显示body
表格中的posts
和index
字段,请使用:
<%= @post.try(:title) %>
<%= @post.try(:body) %>
使用try
,以便@post
为nil
,即如果posts
表中没有记录,则不会在您的网页上收到任何错误。< / p>
<强>更新强>
使用
设置集合@posts
中的每个帖子的属性
@posts = Post.all
您需要按如下方式迭代集合:
<%= @posts.each do |post| %>
<%= post.try(:title) %>
<%= post.try(:body) %>
<% end %>