ruby-on-rails - nil 的未定义方法“round”:动作索引中的 NilClass
问题描述
我是一个新的 Rails 正在尝试在操作索引页面中使用 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 代码在行动索引页面
.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
解决方案
在您的 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
推荐阅读
- react-native - Visual Studio Code for macOS syntax error only for React Native 0.61
- json - 如何使颤振能够查看更难的 API,这些 API 要求不同的变量来访问它们?
- java - Does static has special meaning in Java Threads?
- arrays - How to find the minimum no of swaps needed to sort an array with duplicate elements?
- apache-kafka - 识别 Kafka 消费者中哪个主题有记录
- reactjs - How to hide a hovering menu after click on Link in react-router-dom
- node.js - Discord.js - Delete messages without image
- python - AttributeError: __enter__: requests.get Python
- javascript - React:重复调用组件 setState
- reactjs - 如何获取 API?