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)