Rails 4自定义帮助方法

时间:2013-08-31 13:54:54

标签: ruby-on-rails-4

我正在尝试创建一个帮助方法,以便在过去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的帖子”的任何想法?

1 个答案:

答案 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