Добавить пользовательские методы в конвейер активов Rails 3.1? - PullRequest
10 голосов
/ 29 сентября 2011

Как я могу добавить свои собственные методы в мои активы, такие как CSS-файлы, как это сделал Rails с помощником 'asset_path'?

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

# some.css.erb:

<%= asset_path 'a_image.png' %>

# How can I write this:

<%= my_custom_method 'a_image.png' %>

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

Спасибо

Ответы [ 2 ]

18 голосов
/ 19 декабря 2011

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

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

0 голосов
/ 30 сентября 2011

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

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

...