0

3 つのコントローラーでほとんど繰り返されるコードがあり、疑問に思っていました: コントローラー内でパーシャルをレンダリングする方法はありますか? はっきりさせておきますが、同じ Ruby コードを書き、それぞれのコントローラーでレンダリングしたいと考えています。誰でもそれを行う方法を知っていますか? ありがとう

4

2 に答える 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 に答える