Как использовать частичный макет с коллекцией?Рельсы - PullRequest
3 голосов
/ 27 февраля 2011

Я звоню:

render @users, :layout => "homepage"

потому что я хочу обернуть часть по умолчанию для пользователей (views / _user.html.erb) с пользовательским макетом только для домашней страницы (views / users / _homepage.html.erb).

но, когда я делаю это, я получаю NoMethodError в методе user.name.

Почему-то кажется, что пользовательская переменная не инициализируется должным образом внутри пользовательской части.

Оказывается, после некоторого теста частичная домашняя страница даже не вызывается, она идет прямо к частичной пользовательской части ....

Ответы [ 4 ]

3 голосов
/ 28 февраля 2011

Это не то решение, которое я хотел, я думаю, что на самом деле может быть способ заставить эту работу использовать только вызов для рендеринга, но это то, что дало мне правильный вывод:

@users.each do |user|
  render :partial => "users/user",
         :layout => "users/homepage",
         :locals => { :user => user }
end

Или опция: layout работает только при отображении одного ресурса, а не коллекции?

1 голос
/ 01 января 2013

Попробуйте добавить :as => :user для рендеринга частичного из вида:

<%= render :collection => @users, :as => :user, :partial => 'users/user_short_form', %>

0 голосов
/ 18 декабря 2017

Не уверен, что это более новое дополнение к Rails, но в Rails 4.2.1 я могу передать свою коллекцию в аргумент partial render:

render partial: @users, layout: "homepage"
0 голосов
/ 27 февраля 2011

Вы должны сделать что-то вроде

<%= render 'homepage', :collection => @users, :layout => 'homepage' %>

, не уверенный в опции: layout, но вы должны передать @users thro: collection

надеюсь, это поможет!

...