2017-01-19 4 views
1

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

NameError в Home # индекс Отображение /home/ubuntu/workspace/app/views/shared/_avatar.html.erb где строка # 3 поднятую:

неопределенными локальная переменная или метод `пользователя» для # < #: 0x007f9ce5b9c920> Извлеченные источник (около линии № 3):

<div class="avatar-circle"> 
    <span class="initials"> 
    <%= user.full_name[0..1].upcase %> 
    </span> 
</div> 

Вот мой код: приложение/просмотров/дома/index.html.erb :

<%= show_avatar(post.user) %> 

приложение/контроллеры/проблемы/users_helper.rb:

def show_avatar(user) 
    if user.avatar? 
    image_tag(user.avatar, class: 'avatar-circle') 
    else 
    render partial: 'shared/avatar', :user => user 
    end 
end 

приложение/просмотров/общий/_avatar.html.erb:

<%= user.full_name[0..1].upcase %> 

приложение/модели/user.rb:

def full_name 
    return "#{first_name} #{last_name}".strip if (first_name || last_name) 
end 

Если бы кто-нибудь мог пролить свет на это, я был бы благодарен, большое спасибо.

ответ

0

Как можно на самом деле делать такие вещи:

Вы создаете переменную экземпляра в действии вашего контроллера. Как эта переменная

class UsersController < ApplicationController 
    def show 
    @user = User.find_by(id: 1) 
    end 
end 

@user теперь могут быть использованы с точки зрения users/show.html.erb

Вы можете оказать определенное парциальное с вашей точки зрения и передать @user переменную к нему:

<%= render partial: 'partial_name', locals: {user: @user}%> 
0

Попробуйте изменить эту строку в беспокойство:

render partial: 'shared/avatar', locals: { user: user } 
0

Чтобы передать переменные к частично вам необходимо сделать так:

render partial: 'shared/avatar', locals: {:user => user} 
Смежные вопросы