📅  最后修改于: 2023-12-03 15:09:01.893000             🧑  作者: Mango
在 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 应用中使用嵌套路由可以很好地组织资源、增强可读性,并实现复杂的层次关系。在遵循上述步骤后,我们应该可以很好地在嵌套路由中生成控制器了。