Byłem złym dzieckiem i użyłem następującej składni w moich szablonach częściowych, aby ustawić wartości domyślne zmiennych lokalnych, jeśli wartość nie została wyraźnie zdefiniowana w haszu: locals podczas renderowania częściowego -
<% foo = default_value unless (defined? foo) %>
Wydawało się, że działa to dobrze do niedawna, kiedy (bez żadnego powodu mogłem rozpoznać) nieprzekazane zmienne zaczęły zachowywać się tak, jakby zostały zdefiniowane jako zero (a nie niezdefiniowane).
Jak zauważyły różne pomocne osoby na SO, http://api.rubyonrails.org/classes/ActionView/Base.html mówi, aby nie używać
defined? foo
i zamiast tego użyć
local_assigns.has_key? :foo
Próbuję zmienić swoje sposoby, ale to oznacza zmianę wielu szablonów.
Czy mogę / powinienem po prostu pobierać opłaty z wyprzedzeniem i wprowadzać zmiany we wszystkich szablonach? Czy jest jakaś podstępność, na którą muszę uważać? Jak pilnie muszę testować każdy z nich?