2017-08-03 6 views
0

I Rails bin mit Gerüst ein einfaches Modell Movies, dass die name des Films enthält genannt zu schaffen, director, synopsis und poster.Rails nicht initialisierte Konstante Fehler mit mount_uploader

Ich benutze die Carrierwave Edelstein, um das Posterbild hochzuladen. Als ich zuerst den Schienen Server booten, bekomme ich die folgende Meldung:

in MoviesController # Nameerror neue

nicht initialisierte Konstante Film :: PosterUploader

Die extrahierte Quelle zeigt die Fehlerbildschirm ist meine models/movie.rb Datei:

class Movie < ApplicationRecord 
    mount_uploader :poster, PosterUploader 
end 

Hier ist meine Filme Controller:

class MoviesController < ApplicationController 
    before_action :set_movie, only: [:show, :edit, :update, :destroy] 

    # GET /movies 
    # GET /movies.json 
    def index 
    @movies = Movie.all 
end 

    # GET /movies/1 
    # GET /movies/1.json 
    def show 
    end 

    # GET /movies/new 
    def new 
    @movie = Movie.new 
    end 

    # GET /movies/1/edit 
    def edit 
    end 

    # POST /movies 
    # POST /movies.json 
    def create 
    @movie = Movie.new(movie_params) 

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

    # PATCH/PUT /movies/1 
    # PATCH/PUT /movies/1.json 
    def update 
    respond_to do |format| 
     if @movie.update(movie_params) 
     format.html { redirect_to @movie, notice: 'Movie was successfully 
updated.' } 
     format.json { render :show, status: :ok, location: @movie } 
     else 
     format.html { render :edit } 
     format.json { render json: @movie.errors, status: 
:unprocessable_entity } 
     end 
    end 
    end 

    # DELETE /movies/1 
    # DELETE /movies/1.json 
    def destroy 
    @movie.destroy 
    respond_to do |format| 
     format.html { redirect_to movies_url, notice: 'Movie was successfully 
destroyed.' } 
     format.json { head :no_content } 
    end 
    end 

    private 
    # Use callbacks to share common setup or constraints between actions. 
    def set_movie 
     @movie = Movie.find(params[:id]) 
    end 

    # Never trust parameters from the scary internet, only allow the white 
list through. 
    def movie_params 
     params.require(:movie).permit(:title, :director, :synopsis, :poster) 
    end 
end 

Wenn ich das Modell erstellt mit Rails Gerüst ich das Plakat gemacht um eine Zeichenfolge, verändern aber die teilweise in diesem Abschnitt der Filme auf Datei bilden:

<div class="field"> 
    <%= form.label :poster %> 
    <%= form.file_field :poster, id: :movie_poster %> 
    </div> 

Hier ist meine routes Datei nur in Fall habe ich einen Fehler dort gemacht:

Rails.application.routes.draw do 
    resources :movies 
    root 'movies#index' 
    # For details on the DSL available within this file, see 
http://guides.rubyonrails.org/routing.html 
end 

Jede Hilfe würde sehr geschätzt werden.

Antwort

0

nicht initialisierte Konstante Film :: PosterUploader

Sie sollten erzeugen den Uploader. Haben

rails generate uploader Poster 

die die Datei

app/uploaders/poster_uploader.rb 
+1

Dank soviel erzeugen sollte. Das hat perfekt funktioniert. –

+0

@glad zu helfen :) Akzeptieren Sie meine Antwort. – Pavan

Verwandte Themen