Rails部分在控制器中

时间:2013-02-27 17:31:37

标签: ruby-on-rails partials

我的代码几乎在我的三个控制器中重复,我想知道: 有没有办法在控制器内部渲染部分?我要澄清一下,我想编写相同的ruby代码并在每个控制器中呈现它。有人知道这样做的方法吗?感谢

2 个答案:

答案 0 :(得分: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上定义它,其他三个控制器都继承自。{/ p>

答案 1 :(得分: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