2

i am trying to create a helper method to display different time formats if a post was created in the last 24hrs.

This is what I did in the 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

And Index view

 <% @posts.each do |post| %>
  <%= recent_post_timre %>
 <% end %>

However I keep getting this error "Couldn't find Post without an ID" any ideas ?

4

1 回答 1

4

您正在迭代帖子并希望显示每个帖子的时间,是吗?如果是这样,您应该将帖子传递给recent_post_time方法,例如。

<% @posts.each do |post| %>
  <%= recent_post_time(post) %>
<% end %>

然后调整您的recent_post_time方法以使用传入的帖子。

您也不应该尝试分配 的值created_at,只需输出它。

检查小时是否小于 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
于 2013-08-31T14:00:05.020 回答