【问题标题】:How do I create a voting system in Rails 4 for my blog posts that requires more than two options for voting?如何在 Rails 4 中为需要两个以上投票选项的博客文章创建投票系统?
【发布时间】:2015-03-18 05:39:19
【问题描述】:

我已经建立了一个非常简单的 Rails 博客,它基于现实生活中的治疗类课程。在每篇博文结束时,用户可以对写有“这让你感觉如何?”的博文进行投票

我几乎完成了应用程序的开发,但我不知道如何制作扩展的投票系统。

用户需要能够投票选择 6 种不同的情绪选项(快乐、悲伤、愤怒、鼓舞、无聊、焦虑)。这意味着一票并不比另一票好。没有正票和反对票。它们只是不同。

到目前为止,我遇到的所有 Gems 和教程都具有一个由两个选项组成的投票系统。我需要一种方法来实现 6。

最后,我希望能够计算属于特定博客文章的所有总情绪,并在标题旁边显示得票最多的情绪。

有没有人尝试过这样的事情?在我弄清楚如何做到这一点之后,如果还没有的话,我想把它变成一个宝石。

【问题讨论】:

  • 自己滚动。制作一个属于用户和帖子的投票模型,将投票字段限制为具有所需选项的枚举。围绕这个构建一个投票控制器。

标签: ruby-on-rails ruby gem vote


【解决方案1】:

(我假设用户只为每个帖子选择一票,并且您使用的是最新的 Rails 4.2)

只需创建一个引用UserPost 的新表,它有一个整数字段,我们将使用the new enum 与例如。 Vote 带有整数字段choice,因此模型将是:

class Vote < ActiveRecord::Base
  belongs_to :user
  belongs_to :post

  enum choice: %i[happy sad angry inspired boring anxious]
end

您的UserPost 模型都将has_many :votes

然后(根据文档)您使用 Vote.choices 将名称散列到整数(您将使用它来填充您的视图)。

...最后,您将获得博客文章的情绪计数的哈希值:

post.votes.group('votes.choice').count

我相信你能在里面选出最多票。

更新

OP 在评论中询问我是在哪里发现的,我认为我对他的回复可能对其他人有所帮助:

嗯,除了the docs that I already linked you to in my answer,我关注the rails-core mailing list,它宣布和讨论即将推出的功能,我关注@rails on twitter,他们宣布各种事情,我阅读the release notes for new versions,然后我通过the release notes in the guides主要版本。

【讨论】:

  • 您的投票模型有问题请把belongs_to :vote转为belongs_to :post
  • 嘿,实际上你犯了同样的错误,但另一个 belongs_to - 我现在已经将它修复为 :post:user :) 谢谢。
  • 感谢您的及时回复!我现在要尝试实现这一点。当我这样做时,你能把我链接到你发现这个的地方吗?供我学习
  • 嗯,除了the docs that I already linked you to in my answer,我关注the rails-core mailing list 宣布和讨论即将推出的功能,我关注@rails on twitter,他们宣布各种事情,我阅读the release notes for new versions 然后我去了在主要版本发布后通过the release notes in the guides
  • 我得到了要显示的选项数组,但我需要一种方法让用户选择它们并将它们发布到当前的博客文章。另外,有没有办法让图像成为选择情绪的方式?就像在图像数组而不是字符串数组中一样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
  • 2015-06-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多