В основном я согласен с тем, что говорит Дэн Кроук (+1). Единственная ошибка в его ответе состоит в том, что .to_date
выдает ошибку, если в params[:date]
нет полной строки даты (как в его примере). Поэтому мое предложение будет:
Вид:
<%= link_to month.first.strftime("%B %Y"), blog_archive_month_path(month.first.strftime("%Y-%m-%d")) %>
Контроллер:
@blog_posts = BlogPost.
where(:created_at => params[:date].to_date.beginning_of_month..params[:date].to_date.end_of_month).
order("created_at desc")
Проблема с вашим исходным кодом заключается в том, что вы пытаетесь вызвать strftime
на :created_at
, что невозможно.
Или, если вам не нравится полная дата в вашем URL, вы можете сделать это:
<%= link_to month.first.strftime("%B %Y"), blog_archive_month_path(month.first.strftime("%Y-%m")) %>
И
@blog_posts = BlogPost.
where(:created_at => "#{params[:date]}-01".to_date.beginning_of_month.."#{params[:date]}-01".to_date.end_of_month).
order("created_at desc")