Trilhos locals parciais não persistem quando enviado para outro parcial como seu próprio local,
-
11-09-2019 - |
Pergunta
Eu tornar uma parcial assim:
<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %>
Assim, dentro de _some_partial.html.erb
presto mais dois parciais assim:
<% #foo.nil? #=> false %>
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %>
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>`
A variável local foo torna bem em some_partial.html.erb
e até mesmo em another_partial_again.html.erb
. No entanto, a variável foo é inacessível em another_partial.html.erb
mesmo que eu passei-lo explicitamente na chamada render.
O que está acontecendo aqui?
Obrigado pela ajuda.
Solução 2
resolvido. Acontece que eu também estava prestando o mesmo parcial do controlador sem enviar as variáveis ??locais apropriados. Obrigado de qualquer forma !!!
Outras dicas
Eu tive o erro undefined local variable or method
chegar para mim também quando eu estava prestando um parcial com :locals
definido.
No entanto, eu tinha um problema diferente causando meu problema, então eu pensei que eu iria partilhar a minha solução no caso de ajuda ninguém. (Esta página foi o primeiro resultado quando eu pesquisei este erro depois de tudo)
Basicamente apenas certifique-se de usar :partial => 'path/to/partial'
em sua chamada para render
.
i.
<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %>
Não que eu estava fazendo:
<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %>
Fácil para um novato rails / ruby ??como eu perder.
batido para este muito velha pergunta porque eu enfrentado o mesmo problema. Descobriu-se que com Rails 4+ se você não estiver usando coleções ou o layout da maneira correta é:
# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>
Como documentado aqui .