2013-03-15 60 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]) } 
相关问题