2013-08-31 114 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