2012-04-10 4 views
9

Wdrażam aplikację Rails 3.2 do Heroku. Prekompiluję zasoby lokalnie zgodnie z https://devcenter.heroku.com/articles/rails3x-asset-pipeline-cedar.Dlaczego zwracanie Heroku "devise/sessions.js nie jest prekompilowane"?

Ale jestem coraz

ActionView::Template::Error (devise/sessions.js isn't precompiled): 

Czy ktoś napotkał tego?

Jaki jest poprawny sposób, aby zapewnić, że javascripts devise są prekomfortowane.

Dzięki!

+0

Czy jesteś na stosie cedrowego? – sethvargo

+0

Witaj sethvargo. tak Jestem na Cedar –

Odpowiedz

6

Dziękuję za wszystkie sugestie. Po pewnym zastanowieniu zdaję sobie sprawę, że problem polegał na tym, jak aplikacja została skonfigurowana do wywoływania specyficznego dla kontrolera języka javascript. W przypadku, gdy ktoś inny wpadnie na ten problem, oto co zrobiłem.

Byłem ładowanie specyficznego dla sterownika .js przez następujący tag w pliku układu.

<%= javascript_include_tag "application", params[:controller] %> 

Problem polega na tym, że to się nie powiedzie, jeśli konkretny plik cotroller.js nie istnieje. W moim przypadku strona logowania nie powiodła się, ponieważ nie utworzyłem pliku devise/sessions.js.

Mogłem utworzyć ten plik, ale czułem, że to było niechlujne podejście. Nie podoba mi się, że mam dużo pustych plików.

Zamiast ja jawne wywołanie javascripts kontrolera specyficzne ze względu

<% javascript 'controller.js' %>  

Korzystanie następujące pomocnika w application_helpers

def javascript(*files) 
    content_for(:head) { javascript_include_tag(*files) } 
end 

wydaje się działać dobrze do tej pory.

Jeszcze raz dziękuję za sugestie.

+3

Dla osób zainteresowanych podejściem dodawania pliku js, możesz utworzyć folder 'devise' w' app/assets/javascripts', a następnie umieścić tam plik 'sessions.js'. Poręczny, jeśli chcesz podważyć stronę logowania. Uwaga: Musisz wyświetlić listę zasobów dostępnych indywidualnie: http://stackoverflow.com/questions/7425929/rails-3-1-strategy- for-pre-compiling-controller-specific-js-assets – brookr

+0

Dziękuję bardzo, to jest odpowiedzią, której szukam od wielu godzin! –

3

Spróbuj uruchomić rake assets:precompile.


warto dodać to do config/środowiskach/production.rb:

config.assets.precompile += %w(*.css *.js) 

lub określ plik.

+0

Witaj Justin D. Doceniam twoją odpowiedź, wielkie dzięki. To powinno zadziałać (zadziałałoby, gdybym utworzył potrzebny plik .js), ale po przemyśleniu tego problemu z dnia na dzień zdałem sobie sprawę, że problem wynikał z tego, jak wywoływałam specyficzne dla kontrolera javascripts. Dodałem odpowiedź, aby pomóc innym, którzy mogą napotkać podobny problem. –

5

Moje rozwiązanie:

<%= javascript_include_tag "application", controller_name if controller_name != "sessions" %> 
Powiązane problemy