Rails 4 действует как извлекаемая запись извлечения "проголосовавшего" элемента

Я могу отображать голоса, понравившиеся пользователю, но не знаю, как отобразить реальную запись понравившейся записи. Какой самый простой способ восстановить голосующие записи?

controller.rb

def show
  @user = User.find(params[:id])
  @liked = @user.votes
end

show.html.haml

= @liked.to_json

Результат:

[{"id":5,"votable_id":8,"votable_type":"Post","voter_id":2,"voter_type":"User","vote_flag":true,"vote_scope":null,"vote_weight":1,"created_at":"2016-02-01T00:33:15.968Z","updated_at":"2016-02-01T00:33:15.968Z"}]

Как мне это включить, чтобы я мог просто отобразить заголовок, описание и т. Д. Из записи сообщения?

2 ответа

Есть ли в голосовании post_id? Я предположил, что у вас есть модели voice.rb и post.rb.

vote.rb

belongs_to :post

post.rb

has_many :votes

В шоу

- @liked.each do |l| 
  = l.post.title 
  = l.post.description 

Вы, наверное, уже нашли ответ, но вот что я делаю, чтобы показать список вещей, за которые пользователь проголосовал, используя acts_as_votable драгоценный камень. Я использую Devise, поэтому я использую current_user указать текущего вошедшего в систему пользователя в контроллере.

controller.rb

@liked_posts = current_user.get_up_voted(Post)

view.html.erb

<h3>Your 'liked' blog posts</h3>
<% @liked_posts.each do |post| %>
    <p><%= link_to post.title, post %></p>
<% end %>

Вы можете иметь столько, сколько хотите, чтобы отобразить коллекцию вещей, которые "понравились" пользователю в вашем приложении:

@liked_quotations = current_user.get_up_voted(Quote)
@liked_comments = current_user.get_up_voted(Comment)
@liked_stories = current_user.get_up_voted(Story)

Затем прокрутите их, чтобы показать каждую коллекцию.

Есть два других метода, которые могут быть полезны: один для сбора всех проголосовавших, а другой для сбора всех проголосовавших:

current_user.get_voted(Post)
current_user.get_down_voted(Post)
Другие вопросы по тегам