Использование Rails 'stylesheet_link_tag и javascript_include_tag в Liquid Drop - PullRequest
5 голосов
/ 12 марта 2011

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

Например, html по умолчанию выглядит как более сложная версия этого:

<head>
  <title>{{site.name}}</title>
  ...
  {{js_plugins.colorbox}} # this should return the necessary javascript and/or stylesheet tags
</head>

My Liquid JsPlugins drop isнапример:

class JsPluginsDrop < Liquid::Drop
  include ActionView::Helpers::AssetTagHelper
  ...
  def colorbox
    javascript_include_tag "/path/to/js"
  end
end

Когда я запускаю свои спецификации, я получаю эту ошибку (обратите внимание, что вы видите @drop["colorbox-1.3.15"], когда приведенный выше код действует по-другому. Однако я хотел упростить свой код, поскольку этопроблема не в этом, а в использовании TagHelper):

Failures:
  1) JsPluginsDrop colorbox-1.3.15 should return the correct script tags
     Failure/Error: @drop["colorbox-1.3.15"].stylesheets.should include("/jquery-plugins/colorbox-1.3.15/example1/colorbox.css")
     undefined local variable or method `config' for #<JsPluginsDrop:0xcbfab38>
     # ./app/drops/js_plugins_drop.rb:22:in `stylesheets'
     # ./spec/models/js_plugins_drop_spec.rb:11

Я не удивлюсь, если проблема вызвана тем фактом, что она отделена от моей среды Rails,и падение не имеет доступа к config Rails.Поскольку я все еще хочу иметь возможность использовать эти удобные методы и :cache => true, которые они дают, как я могу использовать stylesheet_link_tag и javascript_include_tag из капли , если это вообще возможно?

1 Ответ

2 голосов
/ 18 ноября 2012

Кажется, что теперь это возможно, если сделать это следующим образом:

class MyDrop < Liquid::Drop

  ...
  def my_js_tag
    helpers.javascript_include_tag '/some/thing'
  end
  ...

  def helpers
    @helpers ||= ActionController::Base.helpers
  end

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...