2012-03-28 15 views
6

Uaktualniam z szyn 3.1.3 do 3.2.2, ale z jakiegoś powodu teraz url_for zawsze zwraca/zasoby, jeśli trasa nie istnieje.Dlaczego adres url_ dla zwrotu/aktywów dla niezdefiniowanych tras?

Na przykład:

url_for({}) #=> "/assets" 
url_for({action: 'fake', controller: 'notreal'}) #=> /assets?action=fake&controller=notreal 

ale chcę go rzucić normalną ActionController :: RoutingError jak zwykle ...

+0

Dziwny. Sprawdź wszystkie konfiguracje env. Czy na nowo zdefiniowałeś 'url_for'? Czy uruchomiłeś 'rake rails: update'? – Austin

+0

Rozwiązałeś to? Mam tutaj ten sam problem. Najprostszy scenariusz, czyli. Brak zasobów, właśnie utworzono DemoController i użyto polecenia redirect_to: action => 'show' z akcji indeksu. i generuje ten typ adresu URL:/assets? action = show & controller = demo Spodziewam się, że to wyrenderuje szablon wyświetlania. Dowiedziałeś się, co się dzieje? – jlstr

+0

@ user766388 wciąż jest tajemnicą:/ – bkempner

Odpowiedz

0

myślę, że masz aktywa wstępnie na kompilacji i od obraz nie istnieje w folderze zasobów, nazwa pliku kompilacji jest pusta, ale ścieżka wskazuje na katalog główny folderu zasobów. Czy widzisz również błąd dotyczący znalezienia wstępnie skompilowanego zasobu w dziennikach?

Spróbuj uruchomić bez wstępnej kompilacji zasobów w środowisku programistycznym, aby je pominąć. Nie będę ponownie odtwarzać szczegółów dotyczących prekompilacji zasobów - szczegółowe informacje na temat potoku zasobów można znaleźć pod numerem http://guides.rubyonrails.org/asset_pipeline.html. Jeśli widzisz tę kwestię tylko w środowisku produkcyjnym, może to wynikać z tego, że platforma hosta wstępnie ją kompiluje.

Jeśli jednak spodziewasz się, że tak się stanie podczas produkcji, możesz chcieć sprawdzić obecność obrazu zamiast wyłączać funkcję wstępnej kompilacji.

1

Szyny nie sprawdza istnienia trasy, jeśli tworzysz trasę, określając akcję kontrolera. I oczywiście pokazuje/aktywa dla {} trasy.

Powinieneś lepiej określić nazwane trasy w routes.rb, a następnie użyć ich do url_for. Jak:

url_for add_user_path

Zapewnia to będzie albo się uda (na istniejącej nazwie trasy) lub pojawia się błąd.

HTH

Powiązane problemy