2016-06-03 12 views
-1

Ich habe eine language_select Methode zum ActionView Formular-Builder:image_tag arbeiten nicht in ActionView Formbuilder Helfer

# app/helpers/form_helper.rb 
class ActionView::Helpers::FormBuilder 
    include ActionView::Helpers::TagHelper 
    include ActionView::Helpers::FormTagHelper 
    include ActionView::Helpers::FormOptionsHelper 
    include ActionView::Helpers::AssetTagHelper 

    def language_select(method, options = {}) 
    image_tag("language-flags/16/en.png") 
    end 
end 

Das Problem ist image_tag liefert ein Bild zu /images/language-flags/16/en.png die es nicht gibt. Ich habe ein Bild in app/assets/images/language-flags/16/fr.png, aber es diente nicht durch die Sprockets Middleware. Überall sonst image_tag funktioniert einwandfrei.

Nachdem man sich die Quellen von Rails angeschaut hat, scheint dies das Standardverhalten von image_tag und genauer asset_path zu sein, und diese Sprockets modifizieren dieses Verhalten tatsächlich, um beispielsweise den Datei-Digest einzuschließen. Es scheint, dass diese Modifikation von asset_path in diesem Zusammenhang nicht verfügbar ist.

Antwort

0

Die Lösung besteht darin, die View-Helfer (wie image_tag) auf das Attribut @template im Kontext des Formular-Builders aufzurufen.

def language_select(method, options = {}) 
    @template.image_tag("language-flags/16/en.png") 
end 
Verwandte Themen