Передати змінну в часткову, рейки 3?


140

У мене є така петля:

<% @posts.each do |post| %>
  <% render middle %>
<% end %>

Потім у моїй середній частці, як я можу отримати доступ до поточної посади?


Привіт Елліот, я використовую це на стандартних риштуваннях. Використання всередині index.html.erb для візуалізації _show.html.erb, де показ часткового містить модальний. кожна річ працює добре, за винятком того, що коли я натискаю посилання show, він показує той самий id замість того, щоб показувати різні id.
учень

Відповіді:


237

Спробуйте це:

<% @posts.each do |post| %>
  <%= render 'middle', :post => post %>
<% end %>

Так, у вас буде postнаявна локальна змінна в межах часткової.


18
вам потрібні теги <% =%> не <%%>, інакше це не відображатиметься
Райан,

4
Майте на увазі, що вам знадобляться <%= render 'middle', :post => post %>рейки 3.1.x
Архонічний

124

Дайте його частковій як локальну змінну

<%= render :partial => 'middle', :locals => { :post => post } %>

Звичайно, на рейках також є ярлик для візуалізації колекцій:

<%= render :partial => 'post', :collection => @posts %>

У цьому випадку він називатиме часткове повідомлення для кожної публікації з локальною змінною 'post'

Ви навіть можете надати шаблон проставки між кожною публікацією:

<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %>

14
Не знав про: spacer_template параметр, дуже приємно. Дякую!
Клаудіо Аксіяресі

11
Зауважте, що: локальний хеш не потрібен при використанні Rails 3. Хеш аргументів перетворюється в аргументи, які передаються до часткового.
надсвітні

4
Мені все ще потрібно: місцеві жителі хеш для його роботи .. Я бігаю 3.2.12
mck

1
<%= render :partial => 'post', :collection => @posts, as: :post %>автоматично прокручує кожну postчастину, тому ви можете використовувати її postяк частку.
ahnbizcad

14
<% @posts.each do |post| %>
  <% render middle, :post => post %>
<% end %>

Тепер ви можете отримати доступ до публікації як локальної змінної postв частковій


10

Замініть <%= render middle %>на <%= render middle, :post => post %>. Тоді у вашому middleчастковому ви можете отримати доступ до postзмінної.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.