Частичные локальные элементы Rails не сохраняются при отправке в другой частичный файл как собственный локальный
-
11-09-2019 - |
Вопрос
Я визуализирую частичный вариант так:
<%= 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
хотя я явно передал его при вызове рендеринга.
Что здесь происходит?
Спасибо за помощь.
Решение 2
Решено.Оказывается, я также визуализировал тот же фрагмент из контроллера, не отправляя нужные локальные переменные.В любом случае спасибо!!!
Другие советы
у меня был 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/Ruby, вроде меня, легко промахнуться.
Наткнулся на этот очень старый вопрос, потому что столкнулся с той же проблемой.Оказалось, что в Rails 4+, если вы не используете коллекции или макет, правильный путь:
# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>
Как документировано здесь.