3 つのコントローラーでほとんど繰り返されるコードがあり、疑問に思っていました: コントローラー内でパーシャルをレンダリングする方法はありますか? はっきりさせておきますが、同じ Ruby コードを書き、それぞれのコントローラーでレンダリングしたいと考えています。誰でもそれを行う方法を知っていますか? ありがとう
2 に答える
5
私はあなたの質問に非常に混乱しています。パーシャルと何の関係があるのかわかりません。しかし、私が正しく理解していれば、あなたが持っているものは次のようなものです。
class FooController < ApplicationController
def my_method
end
end
class BarController < ApplicationController
def my_method
end
end
class BazController < ApplicationController
def my_method
end
end
my_method
そして、メソッドを1つの場所に抽象化して、それを乾燥させたいと考えています。ApplicationController
解決策は、他の3つのコントローラーがすべて継承するでそれを定義することです。
于 2013-02-27T17:36:53.880 に答える
1
モジュールと継承をいじるという 2 つの解決策があります。
モジュール
カスタム コードでモジュールを定義し、それをコントローラーに含めます。
module MyCustomModule
def method_1
#code ...
end
def method_2
#code ...
end
def method_2
#code ...
end
end
次に、コントローラーで:
class MyController < AplicationController
include MyCustomModule
end
継承
すべてのコントローラーがこれらのメソッドで終わることを気にしない場合は、アプリケーションコントローラーでそれらを定義するだけです
class ApplicationController < ActionController::Base
# ...
def method_1
#code
end
# And so on ...
end
于 2013-02-27T17:32:49.927 に答える