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