Как получить частичный доступ к переменной экземпляра с другого контроллера

#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, которое является частью основного макета страницы