2016-06-14 12 views
0

Ich verwende Paperclip + AWS S3 + Imagemagick für das Bild. Es arbeitet völlig in Ordnung in dem www.example.com/users mit dem Tag (vielleicht, weil ich das Büroklammer-Modell und Controller Sachen setze da drin?)Bilder werden global auf allen Seiten angezeigt

<%= image_tag user.avatar.url(:small)%> 

aber der gleiche Code wird nicht angezeigt in einem andere Seite wie www.example.com/conversations.

Ich erhalte eine Fehlermeldung, dass:

NameError in Conversations#show 
undefined local variable or method `user' for #<#<Class:0x007f9c10d25010>:0x007f9c10c17ce0> 
+0

** undefined lokale Variable oder Methode 'Benutzer' ändern ** - Dieser Fehler gibt an, dass Sie nicht 'user' in Ihrem' ConversationsController definiert haben "Show" -Aktion. Sie sollten den entsprechenden 'ConversationsController' Code veröffentlichen. – dp7

Antwort

0

, wenn Sie für die Authentifizierung ersinnen verwenden, dann sollten Sie tun:

<%= image_tag current_user.avatar.url(:small)%> 

wenn Sie Ihre eigene Authentifizierung verwenden, dann sollten Sie etwas tun wie in Ihren Controllern:

before_action: set_user 
def set_user 
    @user ||= User.find(session[:user_id]) # Or your criteria to set user 
end 

in html.erb-Datei oder wahrscheinlich in Ihrer Layout-Datei

<%= image_tag @user.avatar.url(:small) %> 

Wenn ich dies tun würde, dann hätte ich so gemacht.

  1. Teil erstellen in Layouts/shared/_avatar.html.erb mit Code folgen.

<%= image_tag user.avatar.url(:small) %>

  1. hinzufügen befor_action: set_user und set_user Verfahren in Controller-Methode, wie ich sagte.

  2. Rendern teilweise (in Schritt 1 erstellt) im Layout oder wann immer Sie benötigen, um Benutzerbild anzuzeigen, indem Sie Ortsansässige zu teilweise übergeben.

<%= render "layouts/shared/avatar", user: @user %>

+0

<% = image_tag current_user.avatar.url (: small)%> Würde nur das Bild des aktuellen Benutzers zeigen, aber nicht die Person, mit der er spricht, oder? – Raidspec

+0

Ich habe es herausgefunden! Das Problem war, dass ich einen anderen Namen für die Benutzer in meinem Conversations-Controller festgelegt hatte. Ich musste lediglich <% = image_tag user.avatar.url (: small)%> in <% = image_tag participant.avatar.url (: small)%> ändern – Raidspec

0

Das Problem war, dass ich einen anderen Namen für die Benutzer in meinen Gesprächen Controller gesetzt hatte. Alles, was ich tun musste, war

<%= image_tag user.avatar.url(:small)%> 

zu

<%= image_tag participant.avatar.url(:small)%>