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個控制器。