2013-08-31 85 views
2

我想创建一个帮助器方法来显示不同的时间格式,如果过去24小时内创建了一个帖子。Rails 4自定义帮手方法

这是我在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找到邮报”?

回答

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 
+0

您可能需要更具体。你期待它做什么,它没有做什么?如果错误没有改变,那么错误与您发布的问题无关。请发布错误的完整日志。 – sevenseacat

+0

对不起,这是我的错误,感谢您的帮助。铁轨是否提供了我可以使用的“今天”方法,而不是使用过去的24小时? – Joshua

+0

这是我试图做的,它的工作原理,但这是正确的方式来实现它吗?如果post.created_at> Date.today – Joshua