Carriles locales parciales no persisten cuando se envían a otro parcial como su propio local,

StackOverflow https://stackoverflow.com/questions/1240321

Pregunta

Me hacen un parcial de este modo:

<%= render :partial => 'widgets/some_partial, :locals => {:foo => 'bar'} %>

Así interior de _some_partial.html.erb me hacen dos parciales más, así:

<% #foo.nil? #=> false %>
<%= render :partial => 'widgets/another_partial', :locals => {:foo => foo} %>
`<%= render :partial => 'widgets/another_partial_again', :locals => {:foo => foo} %>`

La variable local foo rinde bien en some_partial.html.erb e incluso en another_partial_again.html.erb. Sin embargo, la variable foo es inaccesible en another_partial.html.erb a pesar de que pasé explícitamente en la llamada render.

¿Qué está pasando aquí?

Gracias por la ayuda.

¿Fue útil?

Solución 2

resuelto. Resulta que yo también estaba haciendo que el mismo elemento parcial del controlador sin necesidad de enviar las variables locales adecuados. Gracias de todos modos !!!

Otros consejos

Me había llegado el error undefined local variable or method para mí también cuando me presten un parcial con :locals definido.

Sin embargo, tenía un problema diferente causando mi problema, así que pensé que iba a compartir mi solución en caso de que ayuda a nadie más. (Esta página fue el primer resultado en Google cuando este error después de todo)

Básicamente, sólo asegúrese de usar :partial => 'path/to/partial' en su llamada a render.

es decir.

<%= render :partial => 'widgets/some_partial', :locals => {:foo => 'bar'} %>

No como yo estaba haciendo:

<%= render 'widgets/some_partial', :locals => {:foo => 'bar'} %>

fácil para un novato rieles / rubí como yo a perder.

Topado en esta misma vieja pregunta porque me enfrenté a la misma cuestión. Resultó que con rieles 4+ si no está utilizando colecciones o Diseño de la manera correcta es:

# Instead of <%= render partial: "account", locals: { account: @buyer } %>
<%= render "account", account: @buyer %>

Como se documenta aquí .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top