我希望能够为用户提供完全控制并编辑布局。我还希望他们能够包含他们想要的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就像这样:
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环境分开,并且drop无法访问Rails的config
,那么我不会感到惊讶。由于我仍然希望能够使用这些便捷方法以及他们提供的:cache => true
,如何在drop 中使用stylesheet_link_tag和javascript_include_tag(如果可能的话)?
答案 0 :(得分:2)
现在看来,这样做是可行的:
class MyDrop < Liquid::Drop
...
def my_js_tag
helpers.javascript_include_tag '/some/thing'
end
...
def helpers
@helpers ||= ActionController::Base.helpers
end
end