2011-10-11 10 views
13

Opracowałem aplikację Rails 3.1, która składa się z 100% Ajax CRUD formularzy do wprowadzania użytkowników i klientów. Stworzyłem dwa osobne modele, kontrolery, widoki itp. Widoki dla każdego modelu zawierają pliki jquery do utworzenia edycji aktualizacji i niszczenia. Problem polega na tym, że kiedy wykonuję jakąkolwiek operację, która wykonuje zdalną operację, jest wywoływana dwa razy. Mogę potwierdzić to zdarzenie w widoku konsoli w firebug, a także wynik w wyjściu WEBrick. Czy ktoś może pomóc w śledzeniu tego, co się tutaj wydarzyło? Co spowodowałoby, że szyny przetwarzałyby każde połączenie dwa razy?Rails 3.1 zdalne żądania przesyłanie dwa razy

+0

jakiś kod pomoże lepiej zrozumieć perspektywę ... np. opublikuj kod, który jest wywoływany dwukrotnie – Rafay

+0

To jest przeczucie - czy twój kod JavaScript lub ['jquery-rails'] (https://github.com/rails/jquery-rails) są zawarte na stronie dwa razy? Sprawdź folder public/assets, jeśli wykonałeś jakąkolwiek prekompilację. – Anurag

+0

@Anurag Tak właśnie się dzieje. Uruchomiłem pakiet "bundle exec rake assets: precompile", zanim to się zaczęło. Czy po prostu muszę usunąć ten plik? – ctilley79

Odpowiedz

13

Po wstępnym skompilowaniu zasobów i uruchomieniu w trybie programistycznym, skrypty JavaScript zostaną umieszczone dwukrotnie na stronie.

Usuń wszystko z public/assets, jeśli znajdujesz się w trybie programowania.

+0

Próbowałem postępować zgodnie z Twoim rozwiązaniem (to jest usunąć ścieżkę publiczną/aktywów i zrestartować mój serwer), ale nadal otrzymuję problem wyjaśniony w pytaniu. Czy zapominam o zrobieniu czegoś? – user12882

+2

To jest problem z buforowaniem. zresetuj pamięć podręczną przeglądarki. Zdarzyło mi się, zanim zdałem sobie z tego sprawę – ctilley79

+2

Czy wiesz, że istnieje polecenie prowizji, aby to zrobić? Po prostu napisz: atuty rake: czyste w terminalu. ;) – Kulgar

19

Dodanie config.serve_static_assets = false do development.rb uniemożliwi ładowanie plików z /public/assets.

Właściwie muszę przeprowadzić wstępną kompilację lokalnie, ponieważ w moim trybie testowym używane są tylko zasoby statyczne od /public/assets - testy są przyczyną problemów z aktywami produkcyjnymi. W jaki sposób? Wystarczy ustawić config.assets.compile = false i config.serve_static_assets = true w konfiguracji test.rb.

+1

Począwszy od Rails 4, 'config.serve_static_assets' jest przestarzałe. Zamiast tego użyj 'config.serve_static_files'. – Jin