2014-08-27 4 views
2

В частности, на индексной странице, вы можете иметьRails - передача значений в петлю

@users.each do |user| 
render 'layouts/shortprofile' 
end 

где короткий профиль содержит данные от пользователя и других связанных с ними моделей.

Частичная попытка считывать из метода индекса в пользовательской модели, но нет никакой переменной, определенной в этом методе для отдельного пользователя. Он чувствует себя как пользователь | block var следует читать в частичном, но, похоже, это не так.

Например, в парциальное я мог бы иметь что-то вроде -

user.blogs[1..3].each do |blog| 
    blog.title 
    blog.created_at 
    ..... 

... но я не знаю, как получить значение пользователя в парциальное.

Я хочу сохранить его как частичное, потому что оно отображается в нескольких контекстах, и я хочу быть сухим.

ответ

3

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

например/

@users.each do |user| 
render partial: 'layouts/shortprofile', locals: { user: user } 
end 

Больше информации здесь: http://guides.rubyonrails.org/layouts_and_rendering.html#passing-local-variables

+0

Hi gef - спасибо за это - я пробовал, но как-то прикрутил его - я обновил вопрос в ответ и читаю документы. cheers, Dan – RADan

+0

Эй @ RADan вам нужно включить частичное: при передаче дополнительных параметров. Я только что обновил ответ, чтобы показать :) – gef

+1

Спасибо - это здорово :) – RADan

0

Вы можете изменить свой неравнодушен к «_user.html.erb» и переместите его в папку «views/users» с вашим индексным представлением и замените блок @users.each следующим образом:

<%= render @users %> 

... который должен успешно передать каждый объект пользователя переменной user в частичном.

Смежные вопросы