Ответ 1
решаемая. Оказывается, я также отдавал то же частичное от контроллера, не отправляя правильные локальные переменные. Спасибо в любом случае!!!
Я делаю частичное так:
<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %>
Итак, внутри _some_partial.html.erb
я делаю еще две частичные части:
<% #foo.nil? #=> false %>
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %>
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>`
Локальная переменная foo отображает штраф в some_partial.html.erb
и даже в another_partial_again.html.erb
. Однако переменная foo недоступна в another_partial.html.erb
, хотя я явно передал ее в вызове рендеринга.
Что здесь происходит?
Спасибо за помощь.
решаемая. Оказывается, я также отдавал то же частичное от контроллера, не отправляя правильные локальные переменные. Спасибо в любом случае!!!
У меня возникла ошибка undefined local variable or method
для меня, когда я выполнял частичное с :locals
.
Однако у меня была другая проблема, вызывающая мою проблему, поэтому я решил поделиться своим решением, если это поможет кому-то еще. (Эта страница была первым результатом, когда я все-таки ошибся в этой ошибке)
В основном просто убедитесь, что вы используете :partial => 'path/to/partial'
в своем обращении к render
.
т.е.
<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %>
НЕ нравится, что я делал:
<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %>
Легко для новичков-рельсов/рубинов, подобных мне, чтобы пропустить.
Ввязался в этот очень старый вопрос, потому что я столкнулся с той же проблемой. Оказалось, что с Rails 4+, если вы не используете коллекции или макет, правильный путь:
# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>
Как описано здесь.