2016-07-09 13 views
0

Ich versuche, eine Option hinzuzufügen, wo Benutzer das Profilbild bearbeiten können, das von paperclip Gem hochgeladen wurde. Aber all die Beispiele, die ich aus dem Internet bekommen habe, erklären, wie man ein Bild während der Registrierung des Benutzers hinzufügt, nicht einmal registriert. Wie mache ich es? Ich benutze Gerät zur Benutzerregistrierung.Wie kann Bild mit Büroklammer nach der Anmeldung des Benutzers hinzugefügt werden?

def create 
    @user = User.where(id: current_user.id) 
    ?? 
    ?? 
    end 

    def user_params 
    params.require(:user).permit(:avatar) 
    end 

Was create in der Controller-Aktion sollte hinzugefügt werden, so dass wir Bild User Modell speichern können?

Edit:

user.rb

class User < ActiveRecord::Base 
    # Include default devise modules. Others available are: 
    # :confirmable, :lockable, :timeoutable and :omniauthable 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 

    has_attached_file :avatar, :styles => { :thumb => "59x59#" },, :default_url => "/images/:style/missing.jpg" 
validates_attachment_content_type :avatar, :content_type => /\Aimage\/.*\Z/ 
end 

Auch während der Benutzerregistrierung das Standardbild angezeigt wird, gibt es keine Option für Bild während der Benutzerregistrierung zu wählen.

+0

Können Sie bitte den Code aus dem Benutzermodell bereitstellen? Es fügt mehr Kontext für die Person hinzu, die die Frage beantwortet. –

+0

@IleEftimov: Aktualisiert – InQusitive

Antwort

0

Ich denke, dass es so einfach sein sollte:

def create 
    @user = User.where(id: current_user.id) 
    @user.avatar = params[:user][:avatar] 
    @user.save 
end 

Dies sollte die Datei zuweisen, die Sie an die Benutzer senden, und den Benutzer speichern, einschließlich der Datei. Die Datei wird in Ihrem Verzeichnis public (oder in dem von Ihnen konfigurierten Pfad) gespeichert.

Dann in Ihren Ansichten, sollten Sie in der Lage sein, den Avatar zu nennen:

<%= image_tag @user.avatar.url %> 

Hoffnung, das hilft!

+0

Ich erhalte den Fehler "NoMethodError in UserProfileController # create undefined Methode' avatar = 'für # " – InQusitive

+0

Können Sie Ihr Schema auf das Vorhandensein der Avatar-Spalte in Ihrer Benutzer-Tabelle überprüfen ? – oreoluwa

+0

t.string "avatar_file_name", Limit: 255 t.string "avatar_content_type", Limit: 255 t.integer "avatar_file_size", Grenze: 4 t.datetime "avatar_updated_at" – InQusitive