0

我有一个几乎在我的三个控制器中重复的代码,我想知道:有没有办法在控制器中渲染部分?我会澄清一下,我想编写相同的 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方法抽象到一个地方来干掉它。解决方案是在 上定义它ApplicationController,其他三个控制器都继承自它。

于 2013-02-27T17:36:53.880 回答
1

有两种解决方案,模块和玩继承

模块

使用您的自定义代码定义一个模块并将其包含在您的控制器中

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 回答