2015-08-09 67 views
2

我有以下途徑:繼承的資源和可選的belongs_to:如何範圍集合在父資源,但不是在嵌套的資源?

resources :boilerplates 
resources :projects do 
    resources :boilerplates 
end 

Boilerplate模型是這樣的:

class Boilerplate < ActiveRecord::Base 
    scope :originals, -> { where(prototype_id: nil) } 
end 

我的控制器看起來是這樣的:

class BoilerplatesController < InheritedResources::Base 
    load_and_authorize_resource 
    belongs_to :project, optional: true 
end 

當URL /boilerplates被打開,我要顯示範圍爲originals的所有樣板。

當URL /projects/123/boilerplates被打開時,我希望originals範圍不被激活。

這是如何實現的?

回答

1

我只是找到了一種方法來做到這一點。在BoilerplatesController

protected 

def collection 
    if @project 
    super 
    else 
    super.originals 
    end 
end