Вопрос по ruby-on-rails – Ruby on Rails: группировка сообщений в блогах по месяцам

5

Привет, ребята. Я создал простое приложение для блога с обычными действиями CRUD. Я также добавил новое действие в PostController, которое называется «архив». и связанный вид. В этом представлении я хочу вернуть все сообщения в блоге и сгруппировать их по месяцам, отображая их в таком формате:

March
<ul>
    <li>Hello World</li>
    <li>Blah blah</li>
    <li>Nothing to see here</li>
    <li>Test post...</li>
</ul>

Febuary
<ul>
    <li>My hangover sucks</li>
    ... etc ...

Я не могу на всю жизнь придумать лучший способ сделать это. Предполагая, что модель Post имеет обычныйtitle, content, created_at поля etc, кто-нибудь может мне помочь с логикой / кодом? Я очень новичок в RoR, поэтому, пожалуйста, потерпите меня :)

Ваш Ответ

2   ответа
31

def archive
  #this will return a hash in which the month names are the keys, 
  #and the values are arrays of the posts belonging to such months
  #something like: 
  #{ "February" => [#<Post 0xb5c836a0>,#<Post 0xb5443a0>],
  # 'March' => [#<Post 0x43443a0>] }
  @posts_by_month = Posts.find(:all).group_by { |post| post.created_at.strftime("%B") }
end

<% @posts_by_month.each do |monthname, posts| %>
<%= monthname %>
<ul>
   <% posts.each do |post| %>
     <li><%= post.title %></li>
   <% end %>
</ul>
<% end %>
Error: User Rate Limit Exceeded@posts_by_month = Post.all.group_by { |post| post.created_at.strftime("%B") }Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Barry Gallagher
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded
7

Error: User Rate Limit Exceeded

Error: User Rate Limit ExceededError: User Rate Limit ExceededError: User Rate Limit Exceeded

Error: User Rate Limit ExceededPosts.allError: User Rate Limit ExceededPosts.find(:all)Error: User Rate Limit Exceeded

Error: User Rate Limit Exceededbeginning_of_monthError: User Rate Limit Exceededbeginning_of_monthError: User Rate Limit Exceededstrftime("%B")Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

def index
    @posts = Post.all(:select => "title, id, posted_at", :order => "posted_at DESC")
    @post_months = @posts.group_by { |t| t.posted_at.beginning_of_month }
end

Error: User Rate Limit Exceeded

<div class="archives">
    <h2>Blog Archive</h2>

    <% @post_months.sort.reverse.each do |month, posts| %>
    <h3><%=h month.strftime("%B %Y") %></h3>
    <ul>
        <% for post in posts %>
        <li><%=h link_to post.title, post_path(post) %></li>
        <% end %>
    </ul>
    <% end %>
</div>

Error: User Rate Limit Exceeded

Error: User Rate Limit [email protected] = Post.order('created_at DESC').group_by { |post| post.created_at.beginning_of_month }
Error: User Rate Limit Exceeded

Похожие вопросы