Добавление вспомогательного метода с гемом - PullRequest
9 голосов
/ 06 июля 2010

Я нашел много информации о добавлении вспомогательных методов формы (см. Один из моих других вопросов), но я не могу найти ничего о добавлении вспомогательных методов, как если бы они были определены в application_helper.rb.

Я пытался скопировать application_helper.rb из приложения rails в гем, но это не сработало.

Я также пытался:

class ActionView::Helpers

.. но это выдает ошибку.

Ответы [ 2 ]

26 голосов
/ 06 июля 2010

Создайте модуль где-нибудь для своих вспомогательных методов:

module MyHelper
  def mymethod
  end
end

Смешайте его в ActionView :: Base (например, в init.rb или lib/your_lib_file.rb)

ActionView::Base.send :include, MyHelper
0 голосов
/ 27 августа 2018

Расширяет превосходный ответ @ 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...