2011-12-09 8 views
6

Próbuję zrobić to, ale doprowadza mnie to do szału. I już ustawić to wDodaj dostawcę/zasoby/javascripts do mojego ważnego atutowego szlaku

environment.rb

config.assets.paths << Rails.root.join("vendor", "assets", "javascripts").to_s 

(.to_s ponieważ zwraca obiekt podczas chcę ciąg tutaj). Nie mogę znaleźć rozwiązania i doprowadza mnie do szału, ponieważ katalog stylów w dostawcy działa, ale javascripts nie jest.

Jak mogę to zrobić?

Błąd zwracany:

<h1>Routing Error</h1> 
<p><pre>No route matches [GET] &quot;/assets/ext-all-debug.js&quot;</pre></p> 

Odpowiedz

5

wierzę sprzedawca jest już zawarte w ścieżce aktywów, należy sprawdzić przy użyciu konsoli szyn

rails console 
Rails.application.config.assets.paths.each do |path|; puts path; end 

Jednak najłatwiej może być to ext

  • put w app/assets/JavaSkrypty/lib
  • require_tree będzie go załadować lub już być jawne

app powiedzenie.js

//= require ./lib/ext-all-debug.js 

Jeśli naprawdę chcesz go dostawcy

  • tworzyć reż sprzedawca/assets/JavaScripts/ext
  • utworzyć plik manifestu sprzedawca/assets/javascripts/ext/index.js
  • umieścić eXT-all-debug.js do dostawcy/assets/javascripts/ext/
  • kod

dla index.js

Kod
//= require ./ext-all-debug.js 

dla application.js

//= require ext 

to nazwa katalogu, że manifest plik indeksu znajduje

zrestartować serwer szyny

jeśli nie chcesz aby załadować extjs poprzez application.js, tzn. chcesz włączyć bibliotekę extjs tylko na konkretnych stronach:

<%= javascript_include_tag "ext" %> 
0

To nie jest łatwe, aby zobaczyć ten problem od Ciebie informacji, jak myślę, że problem jest gdzie indziej.

Purpurowy zasób aktywów ma umieścić wszystkie javascripts w jednym pliku. I ten plik jest zawarty w dokumencie HTML. Kluczem jest jeden duży plik JS. Cóż, może być bardziej skomplikowane, ale myślę, że to niekoniecznie jest twoja sprawa.

Tak na przykład w układzie ERB (zazwyczaj app/views/layout/application.erb):

<head> 
    ... 
    <%= javascript_include_tag "application" %> 
</head> 

iw app/assets/javascripts/application.js:

//= require ext_all_debug 
//= ... 

Kiedy strona HTML jest wymagane, to prosi o "application.js" i jest generowany w taki sposób, że kod JS twojego dostawcy jest osadzony w tym pliku (zauważ, że nie wymaga żadnej ścieżki).

I jeszcze jedna rzecz - bardzo ważne jest przetestowanie zachowania w środowisku produkcyjnym, ponieważ zazwyczaj te wygenerowane pliki JS będą obsługiwane przez nginx/apache. rake assets:precompile to dobry początek.

1

Można dodać:

//= require_tree ../../../vendor/assets/javascripts 

do pliku application.js.

1

READ aktualizację

Wygląda jak problem jest związany z faktem, że EXT ma własną ścieżkę strukturą zbudowaną z względnymi ścieżkami.

Rozwiązałem problem, zachowując całą strukturę katalogu ext (bez dzielenia zdjęć w dowolnym miejscu) i dodałem ją do katalogu sprzedawca/zewnętrzny (utworzony przeze mnie). I dodaje ścieżkę z:

config.assets.paths << Rails.root.join("vendor", "assets", "externals").to_s 

a teraz wszystko to działa dobrze przez odniesienie go // = wymagają EXT-all-debug.js

Aktualizacja 23/12/2013:

Począwszy od Rails 3, zauważ, że ten katalog został domyślnie dodany.