0

我想弄清楚如何在我的路由文件中使用关注。Rails 4 - 使用关注的路由

我有叫做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

我不明白在示例中值得称道的是模型,还是我需要写的东西能够在路线中的两个地方.rb文件。

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

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

resources :projects do 
    concerns :eoiable 
    end 

我不知道如果我需要做一个定义,什么地方得到这个工作。

回答

0

只有当你想干你的路线时才需要路线问题。到目前为止,你只有一个路由重复(eoi),所以...使用一个关注点在这里是一个矫枉过正。

你实际上想要做的是有2个eoi控制器,其中一个将负责提供所有eoi s,仅次于那些在项目中的那个。

为方便阅读,我想他们命名空间 - 把一个eois_controller.rbprojects文件夹并将其命名为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 

,当然,你可能会想事后DRY这2个控制器。