/ / "Méthode indéfinie` titre 'pour nil: NilClass "erreur dans Ruby on Rails - ruby-on-rails

«Erreur de méthode non définie« title »pour nil: NilClass» dans Ruby on Rails - ruby-on-rails

Je suis en train de créer un site Web vidéo et je reçois cette erreur lorsque j'essaie d'ajouter un titre à ma page statique où les utilisateurs peuvent regarder une vidéo:

watch.html.erb

<div class="panel panel-default">
<div class="panel-body">
<div class="col-md-4">
<p>You"re watching:</p>
<h1><%= @movie.title %></h1>
</div>
</div>
</div>

Et voici mon fichier movies_controller.rb:

class MoviesController < ApplicationController
before_action :set_movie, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!, except: [:index, :show]

def watch
end

def index
@movies = Movie.all
end

def show
@reviews = Review.where(movie_id: @movie.id).order("created_at DESC")
end

def new
@movie = current_user.movies.build
end

def edit
end

def create
@movie = current_user.movies.build(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

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

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

def set_movie
@movie = Movie.find(params[:id])
end

private
def movie_params
params.require(:movie).permit(:title, :description, :movie_length,     :director, :rating, :image)
end
end

Ma méthode de montre est au-dessus de "privé" dans monLe fichier de contrôleur, qui m’a été dit, est l’une des principales raisons pour lesquelles cette erreur s’affiche. Mais chaque fois que j’essaie d’accéder à la page, l’erreur persiste. Quelqu'un peut-il me dire ce que je fais mal?

Réponses:

1 pour la réponse № 1

Le message d'erreur est très clair: @movie est nil. Nulle part dans votre watch action essayez-vous de définir cette variable comme autre chose que nil, et ton before_action callback qui remplit @movie très clairement ne comprend pas watch dans la liste des actions pour lesquelles il s'exécute.