Существует ли какая-нибудь предвиденная распространенная ситуация, когда это полезно, а не просто использование локальной переменной здесь?
Конечно, есть. Ситуация по умолчанию такая. Проверьте исходный код автоматически сгенерированного (с использованием script/generate/scaffold
) представления в app/views/poops/show.html.erb
:
<p>
<b>Field:</b>
<%=h @poop.field %>
</p>
<%= link_to 'Edit', edit_poop_path(@poop) %>
Если переменная была локальной для метода контроллера, как бы средство визуализации получило доступ к элементу, который вы нашли с помощью find(params[:id])
? respond_to
напрямую не вызывает компонент, который отображает страницу. Вместо этого он задерживает свое выполнение до того момента, когда локальные переменные уже будут вне области видимости. Тогда единственный способ визуализации рендерера с тем, что было вычислено в контроллере, это использование переменных экземпляра.