Какие именно помощники по вставке контента изменили поведение в Rails 3?
Примечания к выпуску для Rails 3.0 включают это изменение:
7.4.2 Помощники с блоками
Помощники любят
form_for
или жеdiv_for
которые вставляют контент из блочного использования<%=
сейчас:<%= form_for @post do |f| %> ... <% end %>
Ожидается, что ваши собственные помощники такого типа будут возвращать строку, а не добавлять ее в выходной буфер вручную.
Помощники, которые делают что-то еще, например
cache
или жеcontent_for
, не затронуты этим изменением, им нужно<%
как прежде.
Мы находимся в процессе миграции веб-приложения с Rails 2.3.18 на Rails 3.1.12, и было бы очень полезно иметь полный список таких помощников, которые были изменены, чтобы мы могли проверить все их вхождения в наш исходный код, но я не могу найти авторитетный список такого рода.
Я попытался просмотреть историю git проекта rails, но, похоже, было много коммитов со связанными изменениями, и они явно не сгруппированы по конкретной ветке. Например, кажется очевидным, что этот список включает в себя:
form_for
form_tag
fields_for
field_set_tag
... из 7b622786f,
link_to
... упоминается в e98474096 и:
div_for
content_tag_for
... упоминается в e8d2f48cff
remote_form_for
.... упоминается в 0982db91f, хотя он удален в Rails 3.
Тем не менее, я уверен, что это не полный - кто-нибудь может предоставить полный список?
2 ответа
У меня нет полного списка, но я думаю, что вы можете извлечь большую часть того, что изменилось, взглянув на различия в документации UrlHelper
а также FormHelper
, большинство методов в этих помощниках изменилось на новый синтаксис.
http://apidock.com/rails/v2.3.8/ActionView/Helpers/UrlHelper/link_to http://apidock.com/rails/v2.3.8/ActionView/Helpers/FormHelper/form_for
В плагине rails_upgrade есть список этих методов, целью которых является проверка вашего приложения на наличие проблем при обновлении с Rails 2 до Rails 3. Соответствующий методcheck_old_helpers
, который проверяет блок помощников, содержащих любое из:
content_tag
javascript_tag
form_for
form_tag
fields_for
field_set_tag
Что касается того, насколько авторитетным это является, этот плагин является официальным плагином проекта Rails, хотя он пропускает пару, которую я нашел, просматривая историю git:
div_for
remote_form_for
link_to
Однако, если в официальном инструменте для проверки этих помощников отсутствуют некоторые из них, возможно, этот список настолько хорош, насколько я могу найти. Другой момент заключается в том, что инструмент проверки обновления упоминает, что должны быть предупреждения об устаревании, если вы пропустите некоторые из них, что обеспечивает дополнительную проверку:
Помощники по блокам, которые используют concat (например, form_for), должны использовать<% = вместо <%. Текущая форма будет продолжать работать, но вы получите предупреждения об устаревании, так как эта форма исчезнет в будущем.