Какие именно помощники по вставке контента изменили поведение в 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), должны использовать<% = вместо <%. Текущая форма будет продолжать работать, но вы получите предупреждения об устаревании, так как эта форма исчезнет в будущем.

Другие вопросы по тегам