2013-12-12 2 views
2

У меня есть приложение, в котором пользователи могут создавать профили, посещать события и комментировать события. Проблема, с которой я сталкиваюсь, например: когда пользователь A отправляет комментарий, а пользователь B отправляет комментарий, оба пользователя имеют профиль пользователя user_image рядом с их соответствующим комментарием.только показывает profile_image для первого пользователя в db?

Вот код, чтобы помочь мне это ясный:

events_controller.rb Snippit

def create 
    @event = current_user.events.new(event_params) 

    respond_to do |format| 
     if @event.save 
     format.html { redirect_to :back, notice: 'Event was successfully created.' } 
     format.json { render action: 'show', status: :created, location: @event } 
     format.js 
     else 
     format.html { render action: 'new' } 
     format.json { render json: @event.errors, status: :unprocessable_entity } 
     format.js 
     end 
    end 
    end 

    def show 
    @event = Event.find(params[:id]) 
    @commentable = @event 
    @user = User.find(params[:id]) 
    @comment = @event.comments.new 
    end 

_comment.html.erb (частично вынесенного в событии/show.html)

<div class="comment">                                   
    <%= simple_user_avatar(@user) %> <%= comment.user.name %> (<small><%= time_ago_in_words(comment.created_at) + " ago" %></small>):<br /><br />    
    <div><%= simple_format comment.body %></div>                             
</div> 

simple_user_avatar вспомогательный метод в helpe rs.rb

def simple_user_avatar(user) 
    if user.profile_image.present? 
     html = link_to (image_tag user.profile_image_url(:small).to_s), user 
    else 
     html = link_to (image_tag "profile-placeholder1.png", size: '50x50'), user 
    end 
    return html 
    end 

Что я делаю неправильно? и как я могу это сделать, так как рядом с комментарием каждого пользователя отображается их собственный профиль profile_image, и не каждый пользователь, который публикует комментарий, имеет профиль пользователя User_image рядом с их комментарием.

+1

Вы получаете аватар '@ user', который является пользователем события. Я думаю, вам нужно использовать 'simple_user_avatar (comment.user)', чтобы прокомментировать профиль пользователей. – Thanh

+0

Правильно, спасибо большое @KienThanh –

ответ

0

Как указал Киен Тхань, вы используете неправильного пользователя для отображения изображения профиля. Кроме того, похоже, что у вас неправильное действие show в вашем EventController. Вы используете те же параметры [: id] для поиска пользователя и события. Если у вас есть вложенное маршрут где пользователи ресурсы вложены в: событиях ресурсов, то ваше шоу действие будет:

def show 
    @event = Event.find(params[:event_id]) 
    @commentable = @event 
    @user = User.find(params[:id]) 
    @comment = @event.comments.new 
end 

Код для simple_user_avatar в комментариях частичных должен быть:

<%= simple_user_avatar(comment.user) %> 

Вы хотите, чтобы пользователь сделал комментарий и передал это помощнику simple_user_avatar, чтобы профиль pic изменялся в соответствии с пользователем, который прокомментировал.

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