Я пытаюсь показать комментарий с самой высокой оценкой на странице показа продукта, но вместо комментария отображается #. Есть идеи почему?
#comment model
class Comment < ApplicationRecord
belongs_to :user
belongs_to :product
scope :rating_desc, -> { order(rating: :desc) }
scope :rating_asc, -> { order(rating: :asc) }
end
#product model
class Product < ApplicationRecord
has_many :orders
has_many :comments
def highest_rating_comment
comments.rating_desc.first
end
end
#product show page
<%= @product.highest_rating_comment %>
2 ответа
Он показывает результат метода inspect
. Вам необходимо вывести значение поля рейтинга. Добавьте изменения на страницу показа продукта:
#product show page
<%= @product.highest_rating_comment.try(:rating) %>
Если ваш вывод выглядит примерно как "#<Comment:0x007fb9ea9561d0>"
, то вы видите результат вызова to_s
для @product.highest_rating_comment
. В основном вы видите текстовое представление местоположения объекта в памяти.
То, что вы, вероятно, хотите вместо этого, является содержанием комментария. Поскольку вы не предоставили свою схему, я не могу сказать, как называется это поле - возможно, @product.highest_rating_comment.comment
?
Похожие вопросы
Новые вопросы
ruby-on-rails
Ruby on Rails - это полнофункциональная платформа веб-приложений с открытым исходным кодом, написанная на Ruby. Он следует популярной модели фреймворка MVC и известен своим подходом «соглашение поверх конфигурации» при разработке приложений.