首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Rails 3 - 嵌套资源 - 路由

在Rails 3中,嵌套资源是指在路由中嵌套多个资源,以便在一个层次结构中表示资源之间的关系。这使得URL结构更加清晰,同时也方便了资源之间的操作。

在Rails 3中,可以使用以下方式定义嵌套资源:

代码语言:ruby
复制
resources :projects do
  resources :tasks
end

这将生成以下路由:

代码语言:txt
复制
project_tasks GET    /projects/:project_id/tasks(.:format)          tasks#index
               POST   /projects/:project_id/tasks(.:format)          tasks#create
new_project_task GET    /projects/:project_id/tasks/new(.:format)      tasks#new
edit_project_task GET    /projects/:project_id/tasks/:id/edit(.:format) tasks#edit
project_task GET    /projects/:project_id/tasks/:id(.:format)      tasks#show
               PATCH  /projects/:project_id/tasks/:id(.:format)      tasks#update
               PUT    /projects/:project_id/tasks/:id(.:format)      tasks#update
               DELETE /projects/:project_id/tasks/:id(.:format)      tasks#destroy

在这个例子中,我们定义了一个名为projects的资源,并在其中嵌套了一个名为tasks的资源。这意味着任务资源只能在项目资源的范围内访问。

在控制器中,可以使用以下方式来处理嵌套资源:

代码语言:ruby
复制
class TasksController< ApplicationController
  before_action :set_project

  def index
    @tasks = @project.tasks
  end

  # ...

  private

  def set_project
    @project = Project.find(params[:project_id])
  end
end

在这个例子中,我们使用before_action过滤器来设置项目对象,以便在操作任务资源之前找到相关的项目。

总之,嵌套资源是一种在Rails 3中表示资源之间关系的方式,可以使得URL结构更加清晰,同时也方便了资源之间的操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券