创建一个" includable"帮助程序中的Rails控制器操作

时间:2017-03-08 13:57:55

标签: ruby-on-rails helper modularity

是否可以通过.getElementById块在Rails助手中进行可包含的控制器操作?我在想这样的事情:

included

已经尝试通过module XablauHelper included do def my_shared_action true end end end 阻止并通过使用类方法即class.eval但没有成功,我已经找到了一个解决方案,使父控制器具有所需的共享操作并继承从它,但为了模块化设计,我想使它更多"全球"方法,所以我可以创建我的解决方案并重用代码,任何不使用继承的建议?

1 个答案:

答案 0 :(得分:1)

帮助中添加控制器操作可能是错误的选择,因为这些方法适用于视图

请考虑使用控制器问题,并在必要时包含它们。例如:

# in app/controllers/concerns/useful_functions_concern.rb
module UsefulFunctionsConcern
  extend ActiveSupport::Concern

  included do
    rescue_from SomeException, with: :handle_access_denied
  end

  def useful_method
    # ...
  end

  protected
  def handle_access_denied
    # ...
  end
end

# in your controller
class XyzController < ApplicationController
  include UsefulFunctionsConcern

  def index
    useful_method
  end
end

可以共享公共控制器动作并且控制器具有共同点,例如它们都是API控制器,也考虑使用继承来实现这一点。例如:

# parent controller
class ApiController < ApplicationController
  def my_shared_action
  end
end

class SpecificApiController < ApiController
end