2011-03-12 11 views
5

Deseo poder otorgar a los usuarios control total y editar el diseño. También quiero que puedan incluir qué plugins de javascript quieren. Por lo tanto, tuve que hacer una interfaz para permitirles hacer eso.Uso de stylesheet_link_tag y javascript_include_tag de Rails en Liquid Drop

Por ejemplo, el html por defecto se parece a una versión más complicada de este:

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

gota Mi líquido JsPlugins es así:

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

Cuando ejecuto mi especificaciones embargo, consigo este error (tenga en cuenta que ve @drop["colorbox-1.3.15"] cuando el código que proporcioné anteriormente actúa de manera diferente. Sin embargo, quería simplificar mi código ya que ese no es el problema, es el uso del TagHelper que es el problema):

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 

No me sorprenderá si el problema está causado por el hecho de que está separado de mi entorno Rails, y la caída no tiene acceso al config de Rails. Como todavía quiero poder utilizar estos métodos de conveniencia y :cache => true que dan, , ¿cómo puedo usar stylesheet_link_tag y javascript_include_tag dentro de un drop, si es posible?

Respuesta

2

Parece que esto es posible ahora cuando se hace de esta manera:

class MyDrop < Liquid::Drop 

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

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

end