Rails 3.1 obsługujący obrazy od dostawcy/assets/images

Próbuję umieścić niektóre zewnętrzne obrazy (używane przez wtyczkę jQuery) do vendor/assets / images w mojej aplikacji Rails 3.1. Problem w tym, że kiedy próbuję czegoś takiego:

<%= image_tag "ui-bg_flat_75_ffffff_40x100.png" %>

Dostaję błąd:

No route matches [GET] "/assets/ui-bg_flat_75_ffffff_40x100.png"
Sprawdziłem szyny.podanie.config.aktywa.ścieżki i wymienia te dirs:
..../app/assets/images
..../app/assets/javascripts
..../app/assets/stylesheets
..../vendor/assets/images
..../vendor/assets/stylesheets
..../.rvm/gems/ruby-1.9.2-p180@mygems/gems/jquery-rails-1.0.9/vendor/assets/javascripts

Jak widać /vendor/assets/images jest tam wymieniony. Jeśli umieszczę mój obraz w app / assets / images wszystko działa.

Myślałem, że nowy rurociąg aktywów powinien przejść przez wszystkie zasoby drysują i serwują żądany plik, gdziekolwiek go znajdzie. Czy ktoś wie w czym problem?
Author: Slobodan Kovacevic, 2011-07-03

4 answers

Musiałem ponownie uruchomić serwer rails po utworzeniu katalogu vendor/assets/images. Wcześniej widziałem ten sam błąd co Ty ("brak dopasowania trasy [GET]").

Domyślam się, że serwer rails nie sprawdza tych katalogów, jeśli nie istniały przy pierwszym uruchomieniu. Kiedy otwierasz konsolę rails, aby zdiagnozować problem, otrzymujesz nową instancję rails, która wie o katalogu, co tylko powoduje zamieszanie.

 80
Author: Adrian Macneil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-20 03:25:29

Jeśli używasz motywu jQuery UI Theme Roller theme, problem może być taki, że w pliku css jQuery-UI obrazy są odwoływane w podfolderze 'images'.

Czyli albo musisz umieścić swoje obrazy w folderze './app/assets/images/images' albo musisz edytować plik css jQuery-UI i usunąć prefiks folderu ' images/'.

 22
Author: woelfle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-13 20:41:26

Rurociąg aktywów jest opisany w tym przewodniku Rails przez Ryana Bigga (stan draft w tej chwili).

Http://ryanbigg.com/guides/asset_pipeline.html i http://ryanbigg.com/2011/06/sprocket-asset-tags-internals / dla referencji.

Zgodnie z tym, twój przykład powinien zadziałać.

Ekstrakt:

Aktywa mogą być umieszczone wewnątrz aplikacji w jednej z trzech lokalizacji: app/ assets, lib / assets lub vendor / assets.

App / assets is dla zasobów, które są własnością aplikacji, takich jak niestandardowe obrazy, pliki javascript lub arkusze stylów.

Lib / assets jest dla kodu własnych bibliotek, który tak naprawdę nie pasuje do zakresu aplikacji lub tych bibliotek, które są współdzielone między aplikacjami.

Vendor / assets jest dla aktywów, które są własnością podmiotów zewnętrznych, takich jak kod dla wtyczek JavaScript.

Każdy podkatalog, który istnieje w tych trzech lokalizacjach, zostanie dodany do ścieżki wyszukiwania dla kół zębatych (widoczne po wywołaniu szyn.podanie.config.aktywa.ścieżki w konsoli). Gdy żądany jest zasób, ścieżki te zostaną przejrzane, aby sprawdzić, czy zawierają zasób pasujący do podanej nazwy. Po znalezieniu majątku jest przetwarzany przez koła zębate, a następnie serwowany.

Przetestowałem na przykładzie w mojej aplikacji i działa ta sama składnia co twoja. Może masz literówkę w nazwie swojego agenta.

Dla Martina: ścieżka wyszukiwania zębatek jest widoczna przez / align= "left" / Linearpodanie.config.aktywa.ścieżki w konsoli.

 9
Author: vincent jacquel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-09 02:49:10

Może powinieneś utworzyć inny folder w /assets / images. Tworzysz nazwę "images", a następnie po prostu kopiujesz wszystkie obrazy jquery-ui i wklejasz do folderu "images", który tworzysz wcześniej. Mam nadzieję, że to ci pomoże.

 2
Author: daynRails,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-09 09:04:36