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