неопределенный метод `round 'для nil: NilClass в индексе действий - PullRequest
0 голосов
/ 26 июня 2018

Я - новый рельс, пытаюсь использовать Rating Star на странице индекса действия, но я получаю эти ошибки

def index
  @listings = Listing.all.order("created_at desc")
end

def show
  impressionist(@listing, nil, { unique: [:session_hash] })
  @reviews =  @listing.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

КОД HAML в действии Страница INDEX

.geodir-category-options.fl-wrap
  .listing-rating.card-popup-rainingvis.star-rating{"data-score" => "#{listing.reviews.average(:rating).round(2)}"}
    %span{style: "float:right"}
      =listing.reviews.count                        

1 Ответ

0 голосов
/ 26 июня 2018

В вашем index.html.haml вы также должны фильтровать то, что вы сделали в методе, показанном в вашем контроллере, поэтому вместо:

listing.reviews.average(:rating).round(2)

Это должно быть:

listing.reviews.average(:rating).present? ? listing.reviews.average(:rating).round(2) : 0

Полный код:

.geodir-category-options.fl-wrap
  .listing-rating.card-popup-rainingvis.star-rating{"data-score" => "#{listing.reviews.average(:rating).present? ? listing.reviews.average(:rating).round(2) : 0}"}
    %span{style: "float:right"}
      =listing.reviews.count      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...