Есть ли случаи, когда Rails перезаписывает переменные экземпляра контроллера в рендере: частичный вызов выполняется в шаблоне? Например, скажем, у нас есть:
Контроллер
def my_action
@widget = Widget.find(params[:id])
end
просмотр my_action.html.erb
Hi there.
<%= render :partial => 'my_helper' %>
That's it, that's all.
просмотр _my
_helper.html.erb
The id is <%= @widget.id.to_s %>.
Существуют ли какие-либо документированные сценарии (ошибки или по замыслу), в которых @widget будет равен нулю при использовании в my_helper? Я вижу такое поведение в приложении и не смог отследить его источник.
Несколько заметок:
* Приложение работает в Rails 2.1.1.
* Несмотря на то, что было бы возможно назначить локальные объекты для вызова render :part => my_helper, по ряду причин локальные пользователи не являются идеальными в этом случае.
* Я провел большую часть времени, просматривая ActionController и ActionView, но не смог изолировать поведение.