shunta9922
@shunta9922 (shimo shun)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

LoadError コメントに対するいいね

解決したいこと

映画についてつぶやけるTwitterのようなアプリを開発しています
現在、投稿(movie)の配下にあるコメント(comment)に対していいね機能を実装中にLoadErrorが発生しました。

発生している問題・エラー

Unable to autoload constant CommentLikesController, expected C:/Users/shunt/laforet_film_club/laforet_app/app/controllers/comment_likes_controller.rb to define it

  raise LoadError, "Unable to autoload constant #{qualified_name}, expected #{file_path} to define it" unless from_mod.const_defined?(const_name, false)

または、問題・エラーが起きている画像をここにドラッグアンドドロップ

該当するソースコード

routes
namespace :movies do
   resources :searches,only: :index,defaults:{ format: :json } 
 end

 resources :movies do
   resources :comments
  end

  post"/comment_likes/:movie_id/:comment_id/create"=>"comment_likes#create"
  post"/comment_likes/:movie_id/:comment_id/destroy"=>"comment_likes#destroy"
____________________________________________________________________________
comment_likes_controller
class CommentLikescontroller < ApplicationController
    before_action :authenticate_user
 def create
    @comment_like=CommentLike.new(
        user_id: @current_user.id,
        comment_id: params[:comment_id]
    )
    @comment_like.save
    redirect_to("/movies/#{params[:movie_id]}")

 end

 def destroy
  @comment_like=CommentLike.find_by(
      user_id:@current_user.id,
      comment_id: params[:comment_id]
  )
  @comment_like.destroy
  redirect_to("/movies/#{params[:movie_id]}")
 end
end
__________________________________________________________________________________
comments_controller
class CommentsController < ApplicationController

  def new
   @comment = Comment.new
   @movie =Movie.find(params[:movie_id])
   @user = User.find(@movie.user_id)
  end

 def create
   @movie=Movie.find_by(id: params[:movie_id])  
   @comment = Comment.create(comment_params) 
   respond_to do |format|
      format.html { redirect_to @comment } 
      format.js  
   end

   if @comment.save
     flash[:notice]= "コメントしました"
     redirect_to movie_path(@movie)
   else
     flash[:notice]="コメントに失敗しました" 
   end
  end
private
 def comment_params
   comment_params = params.require(:comment).permit(:content).merge(user_id: @current_user.id,reply_comment: params[:movie_id])
 end
_______________________________________________________________________________
movies_controller
 def show
   @movie =Movie.find(params[:id])
   @user = User.find(@movie.user_id)
   @likes_count = Like.where(movie_id: @movie.id).count
   @comments = Comment.includes(:user).where(reply_comment: @movie.id)
   @comment = Comment.new
   @comment_likes_count = CommentLike.where(comment_id: @comment.id).count
  end
_______________________________________________________________________________
movies/show.html.erb
 <% if @comments.present? %>     
      <div class="comment-heading">
        <h2>コメント一覧</h2>
      </div>  
      <% @comments.each do |comment| %>  
        <div class="comments-index-item">          
            <div class="comments-left">                      
              <img src="<%= "/user_images/#{comment.user.image_name}" %>">   
            </div>  
            <div class="comments-right">
              <%= link_to(comment.user.name ,"/users/#{comment.user.id}") %>              
              <p>
               <%= comment.content %>
              </p>
              <div class="movie-item">
                <%= comment.created_at %>
            </div>
           <% if CommentLike.find_by(user_id:@current_user.id,comment_id:comment.id) %>
             <%= link_to("/comment_likes/#{@movie.id}/#{comment.id}/destroy",{method:"post"}) do %>
               <span class="fa fa-heart like-btn-unlike"></span>
             <% end %>
           <% else %>
             <%= link_to("/comment_likes/#{@movie.id}/#{comment.id}/create",{method:"post"}) do %>
               <span class="fa fa-heart like-btn"></span>
             <% end %>
           <% end %>

            <%= @comment_likes_count %>

              <% if comment.user_id == @current_user.id || @current_user.admin? %>
             <%= link_to("編集",edit_movie_comment_path(@movie,comment.id)) %>
             <%= link_to("削除",movie_comment_path(@movie,comment.id), method: :delete) %>
           <% end %>    
            </div> 
        </div>  
      <% end %>          
    <% end %>        

version

ruby 2.7.2
Rails 5.2.5
windows

自分で試したこと

他のloaderrorに関する記事を見ても、問題点が見当たらず困っています
お力添えいただきたいです

0

1Answer

comment_likes_controller
class CommentLikescontroller

controller の c を大文字にして CommentLikesController にしてください。

1Like

Comments

  1. @shunta9922

    Questioner

    返信ありがとうございます
    書き換えたら無事動きました
    ありがとうございます

Your answer might help someone💌