我有两个控制器:
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的参数对于两个控制器都不相同。
如何在不重复自己的情况下完成这项工作?
答案 0 :(得分:1)
before_filter
可以接受Proc或lambda作为其第一个参数。
重构您的get_model
函数,使其接受并识别:
def get_model(id)
@model = Model.find(id)
end
然后用lambda调用你的before_filter,并传递相应的id:
before_filter lambda { get_model(params[:whatever_id]) }