📜  如何在嵌套路由 rails 中生成控制器 - Ruby (1)

📅  最后修改于: 2023-12-03 15:09:01.893000             🧑  作者: Mango

如何在嵌套路由 Rails 中生成控制器

在 Rails 应用中,嵌套路由能够让我们组织 URL 并表示资源之间的层次关系。但是,在嵌套路由中生成控制器可能会比较棘手。

这篇教程将展示如何在嵌套路由中生成控制器,并解释一些细节。

准备工作

在开始之前,确保你熟悉 Rails 的基本概念,例如资源、路由和控制器。

生成控制器

首先,我们需要生成一个新的控制器。在命令行中执行以下命令:

rails generate controller Admin::Posts

它将生成一个名为 Posts 的控制器并放置在 app/controllers/admin 目录下。

现在,我们需要给这个控制器添加一些动作。假设我们需要添加一个 index 动作,用于返回所有文章的列表。我们可以这样写:

class Admin::PostsController < ApplicationController
  def index
    @posts = Post.all
  end
end
设置路由

我们已经有了控制器,现在需要在 config/routes.rb 中设置路由。我们将使用嵌套路由来表示文章属于管理员。在文件中添加以下代码:

namespace :admin do
  resources :posts
end

这将生成以下路径:

/admin/posts
/admin/posts/new
/admin/posts/:id/edit
/admin/posts/:id
控制器中访问参数

在嵌套路由中,我们需要使用 params[:parent_id] 或者 params[:id] 来访问父级资源的 ID。例如,假设我们需要查找所有属于管理员的文章,我们可以这样写:

class Admin::PostsController < ApplicationController
  def index
    @posts = Post.where(admin_id: params[:admin_id])
  end
end
总结

在 Rails 应用中使用嵌套路由可以很好地组织资源、增强可读性,并实现复杂的层次关系。在遵循上述步骤后,我们应该可以很好地在嵌套路由中生成控制器了。