我正在尝试创建一个帮助方法,以便在过去24小时内创建帖子时显示不同的时间格式。
这就是我在posts_helper.rb
中所做的def recent_post_time
@post = Post.find(params[:id])
if @post.created_at.hour < 24
@post.created_at = @post.created_at.strftime("%R")
else
@post.created_at = @post.created_at.strftime("%v")
end
end
和索引视图
<% @posts.each do |post| %>
<%= recent_post_timre %>
<% end %>
但是我一直收到这个错误“无法找到没有ID的帖子”的任何想法?
答案 0 :(得分:4)
你正在迭代帖子并希望显示每个帖子的时间,是吗?如果是这样,您应该将帖子传递给recent_post_time
方法,例如
<% @posts.each do |post| %>
<%= recent_post_time(post) %>
<% end %>
然后调整recent_post_time
方法以使用传入的帖子。
您也不应该尝试分配created_at
的值,只输出它。
检查小时是否为&lt; 24不是你想要的(它总是小于24,因为一天只有24小时,所以它总是0-23) - 如果它比一天前更大,你想要的,所以我是改变了你的代码以反映这一点。
def recent_post_time(post)
if post.created_at < 1.day.ago
post.created_at.strftime("%R")
else
post.created_at.strftime("%v")
end
end