Могут ли местные жители пройти два уровня в представлении рельсов? - PullRequest
2 голосов
/ 17 февраля 2012

У меня проблема с передачей переменной: locals на два уровня просмотра.Обычно я просто использую один и просто задаюсь вопросом, есть ли что-то, что предотвращает это:

Например:

<%=render :partial => 'shared/following', :locals => {:following => @following} %>

в shared / _following.html.erb (предполагается, что элемент имеет тип'Location'):

<% following.each do |item| %>
   <% class_type=item.class.to_s %>
  <%#works fine %> 
  <%=debug(item) %>
  <%# a bunch of different types of things to follow %>
  <%=render 'shared/box-'+class_type.downcase! , :locals => { :item => item } %>
<% end %>

в shared / _box-location.html.erb:

<% # this doesn't work nor does @item.name %>
<%=item.name %>

Могу ли я сделать у местных жителей два уровня глубины?Как я могу / должен исправить?

thx

Ответы [ 4 ]

2 голосов
/ 17 февраля 2012

Также обратите внимание, что при указании дополнительных параметров, таких как: макет, требуется явно указать: частичное.

( Источник )

:locals также является дополнительной опцией, поэтому попробуйте это:

<%= render :partial => 'shared/box-'+class_type.downcase!, :locals => { :item => item } %>
0 голосов
/ 17 февраля 2012

Некоторое время назад я столкнулся с той же проблемой.Я просто добавил ": частичный", и после этого он работал.Попробуйте это.

<%=render :partial => 'shared/box-'+class_type.downcase! , :locals => { :item => item } %>
0 голосов
/ 17 февраля 2012

Не могли бы вы попробовать, сделайте общий доступ / поле частичным.

<%=render :partial =>'shared/box-'+class_type.downcase! , :locals => { :item => item } %>

Надеюсь, это поможет.

0 голосов
/ 17 февраля 2012

Вам нужно использовать либо

<%=render :partial => 'shared/box-'+class_type.downcase! , :locals => { :item => item } %>

или

<%=render 'shared/box-'+class_type.downcase! , :item => item %>
...