Добавить пользовательские методы в конвейер 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 с той же структурой, что и этот, и добавить собственные методы. Не забудьте включить новую библиотеку в свой инициализатор приложения.