Я пытаюсь показать комментарий с самой высокой оценкой на странице показа продукта, но вместо комментария отображается #. Есть идеи почему?

#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 %>
1
BoB 28 Фев 2017 в 23:17

2 ответа

Лучший ответ

Он показывает результат метода inspect. Вам необходимо вывести значение поля рейтинга. Добавьте изменения на страницу показа продукта:

#product show page
<%= @product.highest_rating_comment.try(:rating) %>
0
Alex Kojin 28 Фев 2017 в 20:46

Если ваш вывод выглядит примерно как "#<Comment:0x007fb9ea9561d0>", то вы видите результат вызова to_s для @product.highest_rating_comment. В основном вы видите текстовое представление местоположения объекта в памяти.

То, что вы, вероятно, хотите вместо этого, является содержанием комментария. Поскольку вы не предоставили свою схему, я не могу сказать, как называется это поле - возможно, @product.highest_rating_comment.comment?

0
Brian 28 Фев 2017 в 20:26