1

私は2つのコントローラを持っています:

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 またはラムダを受け入れることができます。

get_modeland id を受け入れるように関数をリファクタリングします。

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

次に、ラムダを使用して before_filter を呼び出し、対応する id を渡します。

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