Работа через Michael Hartl's Rails Tutorial 2nd Ed Chapter 10 Exercise 5, У меня возникла проблема с частичными и коллекциями и с использованием частичного частичного.Rails 3 Вложенные частицы, коллекции, местные жители (Rails Tutorial 2nd Ed: Chapter 10, Упражнение 5)
Глава 10, Упражнение 5 гласит: «Используя частичные, устраните дублирование в ссылках удаления из листинга 10.46 и листинга 10.47».
Листинг 10,46: приложение/просмотров/microposts/_micropost.html.erb
<li>
<span class="content"><%= micropost.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
<% if current_user?(micropost.user) %>
<%= link_to "delete", micropost, method: :delete,
confirm: "You sure?",
title: micropost.content %>
<% end %>
</li>
Листинг 10,47: приложение/просмотров/общий/_feed_item.html.erb
<li id="<%= feed_item.id %>">
<%= link_to gravatar_for(feed_item.user), feed_item.user %>
<span class="user">
<%= link_to feed_item.user.name, feed_item.user %>
</span>
<span class="content"><%= feed_item.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(feed_item.created_at) %> ago.
</span>
<% if current_user?(feed_item.user) %>
<%= link_to "delete", feed_item, method: :delete,
confirm: "You sure?",
title: feed_item.content %>
<% end %>
</li>
Мой подход был для создания этого файла общих/_item_delete_link.html.erb
<%= link_to "delete", item, method: :delete,
confirm: "You sure?",
title: item.content %>
Тогда используйте этот частичный в оригинальных обертонов, как это:
Листинг 10,46: приложение/просмотров/microposts/_micropost.html.erb
<li>
<span class="content"><%= micropost.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(micropost.created_at) %> ago.
</span>
<% if current_user?(micropost.user) %>
<%= render partial: 'shared/item_delete_link', collection: @microposts, as: :item %>
<% end %>
</li>
Листинг 10.47: приложение/просмотров/общий/_feed_item.html. Еврорадио
<li id="<%= feed_item.id %>">
<%= link_to gravatar_for(feed_item.user), feed_item.user %>
<span class="user">
<%= link_to feed_item.user.name, feed_item.user %>
</span>
<span class="content"><%= feed_item.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(feed_item.created_at) %> ago.
</span>
<% if current_user?(feed_item.user) %>
<%= render partial: 'shared/item_delete_link', collection: @feed_items, as: :item %>
<% end %>
</li>
Это получило все мои тесты, чтобы пройти, так что я думал, что это работает, пока я не проверил его в браузере: http://grab.by/daUk
Вся коллекция снова отображается для каждой части _item_delete_link, тогда как я хотел бы передать локальную переменную из исходной коллекции, используемой в родительском частичном.
Я пробовал использовать locals: { }
и object:
для визуализации, но не повезло.
Кто-нибудь знает ответ? Благодаря!
Ах, просто понял это: '<% = оказывают частичное: 'общий/item_delete_link', местные жители: {пункт: micropost}%> и' <% = сделать частичным: 'sh ared/item_delete_link ', locals: {item: feed_item}%> '.... Имеет смысл, просто нужно передать местных жителей через ... Я пробовал это раньше, но делал' item: @ feed_item' и 'item: @micropost ', но мне нужно было передать локальную переменную, а не объект. duh –
Пожалуйста, укажите точный код, используя 'locals:'. Thx –
Только что получил, спасибо! –