Локальная переменная Rails не установлена - PullRequest
1 голос
/ 21 мая 2011

Я запутался с передачей переменной экземпляра контроллера в частичный шаблон (названный в честь этой переменной экземпляра).

Документация от http://api.rubyonrails.org/classes/ActionView/Partials.html говорит:

По умолчанию PartialRenderer использует имя шаблона для локального имени объекта, переданного в шаблон.Эти примеры фактически одинаковы:

<%= render :partial => "contract", :locals => { :contract  => @contract } %>
<%= render :partial => "contract" %>

Но в моем случае я не могу получить ту же магию.

ProductsController # show :

@foo = "123456789"

show.html.erb в следующей редакции работает (контроллер @ foo отображается как локальная переменная foo в _foo.html.erb ):

<%= render :partial => 'foo', :locals => { :foo  => @foo } %>

Но следующий код не передает переменную @foo контроллера в _foo.html.erb частично:

<%= render :partial => 'foo' %>

Почему так?

1 Ответ

1 голос
/ 21 мая 2011

Насколько я знаю, местные жители обычно должны быть явно переданы в частичное.Единственный случай, когда он может быть передан автоматически, это когда вы передаете основной объект для этого действия контроллера, т.е. если вы передаете запись @foo в каком-либо действии для контроллера foos.

В вашем конкретном случаеслучае, передача @product должна работать автоматически.Если вы хотите передать @foo, вам нужно будет передать его явно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...