Search code examples
ruby-on-railsruby-on-rails-4

undefined method `round' for nil:NilClass


i followed a video tutorial on How To Build A Movie Review App with Rails 4.

and i found this problem, when i write a review without rating this problem happens

enter image description here

movies_controller.rb

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

    if @reviews.blank?
     @avg_review = 0
       else
       @avg_review = @movie.reviews.average(:rating).round(2)
    end
end

i tried to do this but it seems that it's not working to

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

    if @reviews.blank?
     @avg_review = 0
      elsif !@reviews.blank? && @movie.rating.blank?
        @avg_review = 0
       else
       @avg_review = @movie.reviews.average(:rating).round(2)
    end
  end

please is there in solution for this problem


Solution

  • please try this

    def show
        @reviews =  @movie.reviews.order("created_at DESC")
        unless @reviews.present?
         @avg_review = 0
        else
         @avg_review = @reviews.average(:rating).present? ? @reviews.average(:rating).round(2) : 0
        end
    end