2016-08-06 10 views
0

Ich versuche, ein Profilbild für die Benutzer zu erhalten, ohne Glück. Ich habe das carrierwave gem in der gemfile zusammen mit mini_magick installiert.Ruby on Rails image_tag zeigt das Bild nicht an Carrierwave

Bild uploader

class AvatarUploader < CarrierWave::Uploader::Base 

    include CarrierWave::MiniMagick 

    storage :file 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    version :thumb do 
    process :resize_to_fit => [80, 80] 
    end 

    def extension_white_list 
    %w(jpg jpeg gif png) 
    end 

user.rb

class User < ActiveRecord::Base 
    ... 

    mount_uploader :avatar, AvatarUploader 
end 

show.html.erb

... 

<%= image_tag @user.avatar.url(:thumb) if @user.avatar?%> 

<%= link_to "Edit", edit_user_path(@user)%> 

Controller (der Alart angezeigt wird, anstelle des Bildes)

def update 
     if @user.update(user_params) 
      redirect_to @user 
     else 
      flash.now[:alert] = "Something went wrong. Please try again." 
      render :edit 
     end 
    end 

    private 

    def check_authorization 
     unless current_user.id == params[:id].to_i 
      redirect_to root_url 
     end 
    end 

    def set_user 
     @user = User.find(params[:id]) 
    end 

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

Antwort

0

Wow, was für eine großartige Gemeinschaft haben wir hier! So hilfreich! Eigentlich musste ich zu reddit gehen, um die verdammte Antwort zu bekommen. Ich bin mir sicher, dass es in der Zukunft Menschen geben wird, die das gleiche Problem haben werden wie ich und die leider zuerst auf dieser Seite nach einer Antwort suchen werden. Was für mich funktionierte, war die Installation imagemagick Wenn Sie einen Mac verwenden und Homebrew installiert haben, ist es so einfach wie brew install imagemagick. Starten Sie Ihren Server neu und es sollte funktionieren.