Стоит ли мне волноваться из-за предупреждений об устаревании Rails?
-
13-09-2019 - |
Вопрос
При работе с любой структурой, с которой вы не знакомы на 100%, я считаю целесообразным попытаться понять и очистить любые посторонние предупреждения, хотя бы для того, чтобы у вас было больше шансов заметить реальные ошибки, когда они происходят.
В последнее время я получал следующее:
DEPRECATION WARNING: @model will not longer be implicitly assigned to model
Кажется, это ничего не нарушает в моей текущей базе кода, но я волнуюсь только потому, что не совсем понимаю предупреждение.Я подумал, что вообще лучше НЕ использовать @model в своих частичных файлах.
Тем не менее, это предупреждение вызывается каждый раз, когда эта конкретная «модель» появляется в ее части.
Как мне его явно назначить?Я создал @model в контроллере, а затем вызываю партиал с коллекцией (понял, что это метод «railsy»).
Может ли кто-нибудь объяснить мне, что здесь происходит, и какие лучшие практики существуют в этой ситуации?Я еще не волнуюсь, но километры предупреждений заглушают реальный результат моего приложения.
Решение
В 2.3.5 да, вам следует исправить свой код.Раньше ты мог это сделать
@rocket_launcher = RocketLauncher.find(params[:id])
page.insert_html :bottom, 'ajax_this', :partial => 'rocket_launcher'
и всё было нормально (@rocket_launcher подобрали в партиале).Больше никогда.Теперь ты должен сделать
page.insert_html :bottom, 'ajax_this', :partial => 'rocket_launcher', :locals=>{:rocket_launcher=>@rocket_launcher}
Тем не менее, ваш пример
<%=render :partial => "rocket_launcher", :collection => @rocket_launchers %>
это круто, и предупреждения об устаревании, которые были в 2.2.x, должны быть исправлены сейчас (в 2.3.5).
Другие советы
Откопав этот билет на Маяк, я бы не стал слишком беспокоиться;еще.
Недопустимое сообщение «@variable больше не будет неявно присваиваться переменной».