【问题标题】:Display users who voted on post acts_as_votable显示对帖子投票的用户acts_as_votable
【发布时间】:2014-08-15 21:39:21
【问题描述】:

我正在使用acts_as_votable gem 并已实现它,以便用户可以对帖子模型进行投票。我想要做的是当我显示我想要列出用户投票的帖子时。我目前通过以下方式显示分数:

<%= post.cached_votes_score %> 

在posts/index.html.erb 这很好用。我只是不知道如何显示投票的用户。理想情况下,我想显示 user.image。

这是目前为止的代码:

模型/关注/votes.rb

def up_vote
  @post = find_post
  @post.liked_by current_user
  flash[:notice] = "Thanks for voting #{current_user.name}"
  redirect_to @post
end

我添加了它,以便用户是投票者并且帖子是可投票的。

我还添加了缓存迁移:

class AddCachedVotesToPosts < ActiveRecord::Migration
 def self.up
 add_column :posts, :cached_votes_total, :integer, :default => 0
 add_column :posts, :cached_votes_score, :integer, :default => 0
 add_column :posts, :cached_votes_up, :integer, :default => 0
 add_column :posts, :cached_votes_down, :integer, :default => 0
 add_column :posts, :cached_weighted_score, :integer, :default => 0
 add_column :posts, :cached_weighted_total, :integer, :default => 0
 add_column :posts, :cached_weighted_average, :float, :default => 0.0
 add_index  :posts, :cached_votes_total
 add_index  :posts, :cached_votes_score
 add_index  :posts, :cached_votes_up
 add_index  :posts, :cached_votes_down
 add_index  :posts, :cached_weighted_score
 add_index  :posts, :cached_weighted_total
 add_index  :posts, :cached_weighted_average
end

def self.down
 remove_column :posts, :cached_votes_total
 remove_column :posts, :cached_votes_score
 remove_column :posts, :cached_votes_up
 remove_column :posts, :cached_votes_down
 remove_column :posts, :cached_weighted_score
 remove_column :posts, :cached_weighted_total
 remove_column :posts, :cached_weighted_average
end
end

任何帮助将不胜感激。如果您希望我在上面添加任何代码,也请告诉我。

编辑这里是 gem https://github.com/ryanto/acts_as_votable的链接

【问题讨论】:

  • post.voters 工作吗?
  • @JoeKennedy 恐怕不会。我得到未定义的方法选民。

标签: ruby-on-rails


【解决方案1】:

您可以使用以下代码获取帖子的所有选民 ID 列表

 @post.votes_for_ids

【讨论】:

  • 嘿@Icicle,这让我有了ID,这是伟大的一步。在我的用户模型上,我有一个图像字段。你知道我怎么能用这些 ID 打印出来吗?
  • 尝试使用下面的 sn-p 这将给用户用户对象,可用于获取图像字段数据@post.votes_for.voters
  • 完美了 :) 非常感谢。
  • 对这里感兴趣的是代码
【解决方案2】:

你可以试试下面的代码来获取用户名吗

@post.vote_by 

【讨论】:

  • 它返回 false。如在视图中打印错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多