2013-03-15 32 views
1

我有兩個控制器:如何根據控制器使用各種參數調用before_filter?

class MyController < ApplicationController 
    before_filter :get_model 
    # Actions 
end 

class MyOtherController < ApplicationController 
    before_filter :get_model 
    # Actions 
end 

在我ApplicationController,我有我用它來得到一定的模型功能:

def get_model 
    @model = Model.find(params[:model_id]) 
end 

然而,這將持有該模型ID的參數是不兩個控制器都一樣。

我該如何使這項工作無需重複自己?

回答

1

before_filter可以接受Proc或lambda作爲其第一個參數。

重構您get_model功能,所以它接受和ID:

def get_model(id) 
    @model = Model.find(id) 
end 

然後用拉姆達打電話給你的before_filter,並通過相應的ID:

before_filter lambda { get_model(params[:whatever_id]) } 
相關問題