Добавить пользовательские методы в конвейер Rails 3.1?

Как я могу добавить свои собственные методы в мои активы, такие как css файлы, например Rails, с помощником "asset_path"?

С собственным помощником Rail, я могу написать это:

# some.css.erb:

<%= asset_path 'a_image.png' %>

# How can I write this:

<%= my_custom_method 'a_image.png' %>

Я пробовал много способов, но не смог найти достойный способ. Вы знаете кого-то?

Спасибо

Ответ 1

Лучший способ, который я нашел, - создать пользовательский вспомогательный модуль в приложении/помощниках:

module AssetsHelper
  def my_custom_helper_method
    # do something  
  end
end

И затем, чтобы потребовать его, как это в application.rb, после настройки ваших приложений (очень снизу):

module Sprockets::Helpers::RailsHelper
  require Rails.root.join('app', 'helpers', 'assets_helper.rb')
  include AssetsHelper
end

И вы можете следовать этой проблеме, чтобы найти лучший способ: https://github.com/rails/rails/issues/3282

Ответ 2

Обычные вспомогательные методы недоступны в представлениях активов. Чтобы добавить собственные методы, вам необходимо расширить вспомогательный модуль Sprockets. Имейте посмотреть код встроенных помощников, чтобы увидеть, как вы можете это сделать.

В двух словах вы можете добавить файл в lib с той же структурой, что и этот, и добавить собственные методы. Не забудьте включить новую библиотеку в свой инициализатор приложения.