2015-08-09 61 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