1

我有两个控制器:

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 的参数对于两个控制器并不相同。

我怎样才能在不重复自己的情况下完成这项工作?

4

1 回答 1

1

before_filter可以接受 Proc 或 lambda 作为其第一个参数。

重构您的get_model函数,使其接受和 id :

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

然后使用 lambda 调用 before_filter,并传递相应的 id :

before_filter lambda { get_model(params[:whatever_id]) }
于 2013-03-15T15:12:49.713 回答