【发布时间】:2011-02-01 01:55:09
【问题描述】:
我正在构建一个包含多个项目的网络应用程序。通用数据模型是这样的,每个项目都有许多资源,例如文档、寄存器等。大致如下:
class Project < ActiveRecord::Base
has_many :documents, :registers, :employments
has_many :users, :through => :employments
class User < ActiveRecord::Base
has_many :employments
has_many :projects, :through => :employments
class Document < ActiveRecord::Base
belongs_to :project
class Register < ActiveRecord::Base
belongs_to : project
困难来自于路由!!对项目的任何 C UD 操作都将通过命名空间完成。但是,当用户查看项目时,我希望路由中的 project_id 如下:
'0.0.0.0:3000/:project_id/documents/
或
'0.0.0.0:3000/:project_id/register/1/new
我想过这样的事情:
match '/:project_id/:controller/:id'
我假设我要将 project_id 存储在会话中?如果我放弃这些路线以获得更简单的东西,例如:
"0.0.0.0:3000/documents"
然后如何将任何 CRUD 操作绑定到文档或注册到当前项目?当然,我不必将它硬连接到每个控制器中?
帮助!
【问题讨论】:
标签: ruby-on-rails-3 routing nested-resources