2012-03-24 5 views
1

Mein Setup enthält Ruby 1.9.3, Rails 3.2 und jQuery 1.7.1. Ich fand, dass jQuery-Anfragen sendet nur /assets/image_file.png /assets/images/image_file.png statt, die in defekten Link führt, wie im Bild unten gezeigt:Rails 3.2, jQuery 1.7.1 Verknüpfung zu Assets/Bilder gebrochen

jQery link to image broken. other css,js and images files are referenced in assets correctly.

Ich weiß aus Asset Organization Diese Rails suchen nach geeigneten Ordnern in Assets für js, css und Bilddateien. Ich weiß also, dass es in einem Unterverzeichnis "images" nach dem Bild suchen sollte, auf das als/assets/images verwiesen wird. Ich erstellte ein Unterverzeichnis Bilder in Assets/Bilder (App/Assets/Bilder/Bilder) und kopierte das referenzierte Bild dort und es hat funktioniert.

Aber sollte jQuery die Bilder nicht korrekt im Anlagenverzeichnis referenzieren. Hier ist der jQuery-Code durch den Fehler verwiesen werden mit der Linie produziert Fehler hervorgehoben:

jQuery code resulting in broken link, line producing error highlighted.

Gibt es einen Konfigurationsparameter, der in application.rb oder Umgebungsdateien eingestellt werden muss, um den Vermögenswert Pfad für jQuery zu setzen? Oder eine andere Möglichkeit, das zu beheben?

+0

Ich bin mir nicht sicher, ob ich Ihr Problem verstehe oder nicht, aber könnten Sie Ihre CSS-Dateien durchsuchen und mir mitteilen, welche Datei und welcher Ort 'ui-bg_glass_80_d7ebf9_1x400.png' geschrieben wurde? –

Antwort

1

Durchsuchen Sie CSS unter Ihrem Projekt & ersetzen images/ui-bg_glass_80_d7ebf9_1x400.png bis ui-bg_glass_80_d7ebf9_1x400.png, Hoffentlich funktioniert es.

+0

Danke. Im Projekt gesucht und festgestellt, dass sich das Problem in der Datei jquery-ui-1.8.18.custom.css befindet. Alle Verknüpfungen zu Bildern beginnen mit 'images /'. Im Moment werde ich alle Links ersetzen, aber ich denke, dass es entweder in Rails gelöst werden sollte, so dass jquery-ui oder andere CSS-Dateien sofort verwendet werden können. – Zeeshan

+0

Willkommen, es ist kein Problem mit Rails + jQuery, es ist ein Problem wegen benutzerdefinierten css mit jQuery UI verwendet, so müssen wir uns darum kümmern. Das gleiche Problem tritt bei jeder Technologie auf, weil es ein benutzerdefiniertes CSS ist. Wie auch immer, gut zu wissen, dass Sie Ihre Lösung finden ... :) –

+0

Ich ersetzte alle Vorkommen von 'url (images/image_file_name)' zu 'url (image_file_name)' und versuchte auch 'url (/ images/image_file_name)' in jquery-ui benutzerdefinierte CSS-Datei. Aber es führt immer noch zu einem gebrochenen Bild Link mit dem gleichen Code-Verweis auf jquery.js-Datei wie in der Frage gezeigt. – Zeeshan

0

Dies geschieht, weil die jquery-ui-1.8.18.custom.css Datei erwartet, dass ihre Bilder in einem images Verzeichnis relativ zur CSS-Datei selbst sind.
Die Asset-Pipeline von Rails 3 verschiebt die CSS-Datei jedoch an einen anderen Speicherort, sodass der Image-Pfad nicht mehr funktioniert.

Das Standardlayout, wenn Sie die jQuery UI 'start' Thema Download ist:

stylesheets/start/ 
stylesheets/start/jquery-ui-1.8.11.custom.css 
stylesheets/start/images/ 

Aber die Asset-Pipeline ordnet es wie folgt aus:

stylesheets/ 
stylesheets/jquery-ui-1.8.11.custom.css 
stylesheets/start/images/ 

So ist der relative Pfad von /images/ui-bg_glass_80_d7ebf9_1x400.png nicht mehr funktioniert.

Ich habe eine Abhilfe, die eine Alias-Richtlinie in meinem Apache Config hinzuzufügen ist:

Alias /assets/images "<path to site>/public/assets/start/images" 

Dies setzt voraus, Ihr Vermögen-sym verknüpft in das öffentliche Verzeichnis.
Sie können diesen Pfad so ändern, dass er direkt auf den Punkt verweist, von dem aus Ihre Assets bedient werden.

Dies ist ein bisschen wie ein Klud, als ob ich jemals entscheiden würde, Themen zu ändern (sehr unwahrscheinlich) Ich muss meine Apache-Konfiguration aktualisieren.
Aber für mich ist es besser, als die CSS-Datei neu zu schreiben, um die Pfade zu ändern, da dies beim Aktualisieren ein Problem wird.

Hoffe, das hilft.