2

投稿が過去 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 のない投稿が見つかりませんでした」というエラーが表示され続けます。何かアイデアはありますか?

4

1 に答える 1

4

投稿を繰り返し処理していて、それぞれの時間を表示したいですよね? その場合は、投稿をrecent_post_timeメソッドに渡す必要があります。

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

recent_post_time次に、渡された投稿を使用するようにメソッドを調整します。

また、 の値を代入しようとするべきではなくcreated_at、出力するだけです。

時間が < 24 であることを確認することも、あなたが望むものではありません (1 日は 24 時間しかないため、常に 24 未満であるため、常に 0-23 になります) - 1 日より大きい場合は必要です。前なので、それを反映するようにコードを変更しました。

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 に答える