Rails 4作为可投票的检索记录"投票"项目

时间:2016-02-01 00:50:37

标签: ruby-on-rails ruby ruby-on-rails-4 acts-as-votable

我能够显示用户喜欢的投票,但我不知道如何显示喜欢的记录的实际记录。什么是检索用户投票记录的最简单方法?

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"}]

如何转动这个以便我可以在Post记录中显示标题,描述等?

2 个答案:

答案 0 :(得分:0)

投票有post_id吗?我以为你有vote.rb和post.rb模型。

vote.rb

belongs_to :post

post.rb

has_many :votes

在节目中

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

答案 1 :(得分:0)

您现在可能已经找到了答案 - 但我现在要做的是显示用户使用acts_as_votable gem投票的内容列表。我正在使用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 %>

您可以根据需要添加尽可能多的内容 - 以显示用户所喜爱的内容集合&#39;在您的应用程序中:

@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)