#ruby-on-rails #variables #instance-variables
#ruby-on-rails #переменные #переменные экземпляра
Вопрос:
Я застрял, пытаясь получить доступ к переменным экземпляра с одного контроллера / представления на другой.
ProductsController
def index
@searcher = build_searcher(params.merge(include_images: true))
@products = @searcher.retrieve_products
end
Я хочу получить доступ к @products
in _header.html.erb
partial, который является частью главной страницы макета application.html.erb
.
Комментарии:
1. С какой локальной переменной у вас проблема? Я не вижу ни одного.
2. Моя ошибка. Переменная экземпляра
3. @pfc А что, если выполнить рендеринг
header
для какого-то другого действия, где@products
это не определено?
Ответ №1:
Всегда рекомендуется передавать локальную переменную внутри partial, чтобы ее можно было использовать более чем в одном месте. таким образом, вы должны передать @products
внутри локальной переменной частично —
Если я чего-то не упускаю, переменная должна быть @products
вместо @product
того, index
что имеет действие @products
= render partial: 'header', locals: {product: @product}
В _header.html.erb product
будет доступна локальная переменная, которая @product
Комментарии:
1. Позвольте мне переформулировать вопрос (возможно, вы не видели edit). Я хочу получить доступ к переменной ЭКЗЕМПЛЯРА @products из контроллера products, действие index. Мне это нужно в моем частичном представлении _header, которое является частью основного макета страницы