0

我有一个简单的博客应用程序,其中包含帖子、评论等,并且想为帖子添加分类,即每个帖子只属于一个类别,并且在其中显示帖子。

现在在路线内

resources :category do
  resources :posts
end

我想要像这样的路径

类别/工作

我生成 CategoryController,但如何填充它并与现有的帖子控制器链接?

class CategoryController < ApplicationController

  def index
    @category = Category.all
  end

  def show
    @category = Category.find(params[:id])  
  end

end

此外,视图如何看起来像类别,以便在其中显示帖子?

4

1 回答 1

1

在您的位置上,我会将帖子和类别作为单独的资源。喜欢:

resources :posts
resources :categories, only: [:show]

然后您的路线类别/作业实际上将是一个简单的 #show 操作,您可以像这样实现

class CategoriesController < ApplicationController
  def show
    @category = Category.find(params[:id])
    @posts    = @category.posts
  end
end

为了使“工作”成为类别模型中 url 内的 id,您应该添加类似

class Category < Active
  def to_param
    name
  end
end

这样,您将保持资源简洁明了,并且不会引入不必要的复杂性。

于 2013-08-01T15:54:54.453 回答