Rails 4 - 路由使用问题
Rails 4 - routing using concerns
我正在尝试弄清楚如何在我的路由文件中使用关注点。
我有名为 User、Project 和 Eoi 的模型。
协会是:
用户
has_many :eois
项目
has_many :eois
Eoi
belongs_to :user
belongs_to :project
我正在尝试制作一个系统来显示已在项目中提交的 eois,以便它们仅对创建该项目的用户可见。
另外,我想向每个用户展示该用户制作的所有 eois(无论它们是在哪个项目上制作的)。
我想我想要第一个场景的嵌套路由,然后我还想要第二个场景没有嵌套的 eoi 路由。
在我的 routes.rb
我有:
resources :projects do
# concerns: :eois,
member do
resources :eois
end
我也想拥有:
resources :eois
我怎样才能完成这项工作?我无法理解 http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Concerns.html
中的示例
我不明白这个例子中值得称赞的是模型还是我需要写的东西才能在 routes.rb 文件的两个地方有路由。
我的下一个尝试是尝试复制上面示例的要点 link,我有
resources :eois#, only: [:index]
concern :eoiable do
resources :eois
end
resources :projects do
concerns :eoiable
end
我不确定是否需要在某处进行定义才能使其正常工作。
仅当您想要 DRY 路线时才需要路线问题。到目前为止,您只有一个路由重复(eoi
),所以...在这里使用关注点是一种矫枉过正。
你真正想要做的是拥有 2 个 eoi
控制器,一个将负责提供所有 eoi
s,第二个仅负责提供项目内部的控制器。
为了更好的可读性,我给它们命名空间——将一个 eois_controller.rb
放在 projects
文件夹中并将其命名为 Projects::EoisController
,第二个 - 作为顶级控制器,命名为 EoisController
。路线看起来像这样:
resources :eois # will map to EoisController
resources :projects do
scope module: :projects do
resouces :eois # will map to Projects::EoisController
end
end
而且,当然,您之后可能想擦干这 2 个控制器。
我正在尝试弄清楚如何在我的路由文件中使用关注点。
我有名为 User、Project 和 Eoi 的模型。
协会是:
用户
has_many :eois
项目
has_many :eois
Eoi
belongs_to :user
belongs_to :project
我正在尝试制作一个系统来显示已在项目中提交的 eois,以便它们仅对创建该项目的用户可见。
另外,我想向每个用户展示该用户制作的所有 eois(无论它们是在哪个项目上制作的)。
我想我想要第一个场景的嵌套路由,然后我还想要第二个场景没有嵌套的 eoi 路由。
在我的 routes.rb
我有:
resources :projects do
# concerns: :eois,
member do
resources :eois
end
我也想拥有:
resources :eois
我怎样才能完成这项工作?我无法理解 http://api.rubyonrails.org/classes/ActionDispatch/Routing/Mapper/Concerns.html
中的示例我不明白这个例子中值得称赞的是模型还是我需要写的东西才能在 routes.rb 文件的两个地方有路由。
我的下一个尝试是尝试复制上面示例的要点 link,我有
resources :eois#, only: [:index]
concern :eoiable do
resources :eois
end
resources :projects do
concerns :eoiable
end
我不确定是否需要在某处进行定义才能使其正常工作。
仅当您想要 DRY 路线时才需要路线问题。到目前为止,您只有一个路由重复(eoi
),所以...在这里使用关注点是一种矫枉过正。
你真正想要做的是拥有 2 个 eoi
控制器,一个将负责提供所有 eoi
s,第二个仅负责提供项目内部的控制器。
为了更好的可读性,我给它们命名空间——将一个 eois_controller.rb
放在 projects
文件夹中并将其命名为 Projects::EoisController
,第二个 - 作为顶级控制器,命名为 EoisController
。路线看起来像这样:
resources :eois # will map to EoisController
resources :projects do
scope module: :projects do
resouces :eois # will map to Projects::EoisController
end
end
而且,当然,您之后可能想擦干这 2 个控制器。