使用gem添加辅助方法

时间:2010-07-06 06:39:04

标签: ruby-on-rails ruby

我已经找到了很多关于添加表单助手方法的信息(请参阅我的其他问题之一),但是我找不到任何关于添加辅助方法的信息,就好像它们是在application_helper.rb中定义的一样。

我尝试将application_helper.rb从rails应用程序复制到gem中,但这不起作用。

我也试过了:

class ActionView::Helpers

..但这会产生错误。

2 个答案:

答案 0 :(得分:26)

为您的帮助方法创建一个模块:

module MyHelper
  def mymethod
  end
end

将其混合到ActionView :: Base中(例如在init.rblib/your_lib_file.rb中)

ActionView::Base.send :include, MyHelper

答案 1 :(得分:0)

要扩展@sdbrown对Rails 4的出色回答:

# in in lib/my_rails_engine.rb
require 'my_rails_engine/my_rails_helper.rb'
require 'my_rails_engine/engine.rb'

# in lib/my_rails_engine/engine.rb
module MyRailsEngine
  class Engine < ::Rails::Engine
    initializer "my_rails_engine.engine" do |app|
      ActionView::Base.send :include, MyRailsEngine::MyRailsHelpers
    end
  end
end

最后

# in lib/my_rails_engine/my_rails_helper.rb 
module MyRailsEngine
  module MyRailsHelpers
    # ...
    def your_helper_here
    end
  end
end