0

我试图弄清楚如何在我的路线文件中使用关注点。

我有名为 User、Project 和 Eoi 的模型。

这些协会是:

用户

has_many :eois

项目

has_many :eois

爱伊

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 文件中的两个位置拥有路由。

我的下一个尝试是尝试复制上面链接中示例的要点,我有

resources :eois#, only: [:index]
  concern :eoiable do
    resources :eois
  end

resources :projects do
    concerns :eoiable
  end

我不确定我是否需要在某个地方进行定义才能使其正常工作。

4

1 回答 1

0

仅当您想要干燥您的路线时才需要路线问题。到目前为止,您只有一个路由重复 ( eoi),所以......在这里使用关注点是一种过度杀伤力。

你真正想要做的是有 2 个eoi控制器,一个负责提供所有eois,第二个只负责项目内部的那些。

为了更好的可读性,我将它们命名为 - 将一个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 个控制器。

于 2016-09-02T06:42:15.540 回答