在Rails中创建博客文章存档

时间:2011-07-05 19:32:23

标签: ruby-on-rails blogs archive

我正在尝试允许用户点击一个月并列出该月的帖子(有点像做搜索,但没有搜索表单)。我希望他们能够点击月份名称。

我可以创建连接到特定月份的帖子的存档,并将其显示在侧边栏中,但我希望该月的帖子替换帖子的索引操作中列出的帖子。

以下是我目前用于存档的代码......

在帖子控制器......

def index

@posts = Post.find(:all, :order => "created_at DESC")
@recent_posts = Post.all(:order => "created_at DESC")
@posts_by_month = Post.find(:all, :order => "created_at DESC").group_by { |post| post.created_at.strftime("%B %Y")}

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @posts }
end

以下是相应索引视图中的内容......

  blog.archive

<% @posts_by_month.each do |monthname, posts| %>
<p class="month-archive"><%= monthname %></p>
     <div class="archive">
    <ul class="archive">
    <% posts.each do |post| %>
    <li class="archive"><p class="archive-post"><%= post.title %></p></li>
    <% end %>
    </ul>
</div>

这将根据创建的月份列出帖子,但这只会让我在那里。我希望用户能够点击月份并让它显示整个帖子,而不只是侧边栏中的列表。

希望有道理。

感谢任何帮助。我已经尝试在某个地方寻找一个例子,以便我可以围绕如何做到并且无法做到。

谢谢!

Aaron ......刚刚来到Ruby

1 个答案:

答案 0 :(得分:2)

我认为您需要在Posts控制器中创建一个名为'month'的新方法,并创建类似

的路由
match 'posts/month/:month' => 'Posts#month', :as=> posts_by_month

在帖子控制器中的新方法中,您可以使用参数params[:month]来选择包含:month=>params[:month]的适当文章

修改

在视图页面中,您可以创建每月链接到posts/month/:month,其中:month将是您选择的任何与月份相关的字符串。

此外,您似乎正在两次获取相同的数据..似乎@posts和@recent_posts正在执行相同的工作。您可能希望消除其中一个以提高性能。