Rails 投票应用程序检查选项的投票计数是否已达到值

米尔科·卡塔布里加

我正在创建一个应用程序来轮询用户。我从本教程开始并对其进行了修改。我还在这里发布了另一个关于它的问题每个用户都有一个投票权重。到目前为止用户可以投票并显示每个选项的投票计数(根据用户的投票权重计算)。

我现在要做的是设置一个条件,检查该民意调查的任何选项是否已达到 50%。

投票.rb

class Vote < ApplicationRecord

  belongs_to :user
  belongs_to :vote_option
end

投票选项.rb

class VoteOption < ApplicationRecord

  belongs_to :poll
  validates :title, presence: true
  has_many :users, through: :votes
  has_many :votes, dependent: :destroy

  def get_vote_count
    Vote.joins(:vote_option).joins(:user).where("vote_options.id = #{self.id}").sum(:vote_weight)
  end

end

民意调查

class Poll < ApplicationRecord

   validates :question, presence: true
   validates :division, presence: true
   validates :open_date, presence: true
   validates :close_date, presence: true
   before_save :set_position
   set_sortable :sort, without_updating_timestamps: true



   has_many :comments, as: :commentable
   has_many :votes, :through => :vote_options
   has_many :vote_options, dependent: :destroy
   belongs_to :division
   belongs_to :user
   has_and_belongs_to_many :users
   accepts_nested_attributes_for :vote_options, :reject_if => :all_blank, :allow_destroy => true
   accepts_nested_attributes_for :users
   def normalized_votes_for(option)
     votes_summary == 0 ? 0 : (option.get_vote_count.to_f / votes_summary) * 100
   end

   def votes_summary
     vote_options.inject(0) {|summary, option| summary + option.get_vote_count}
   end

end

polls_helper.rb

module PollsHelper

  def visualize_votes_for(option)
    content_tag :div, class: 'progress' do
      content_tag :div, class: 'progress-bar',
                  style: "width: #{option.poll.normalized_votes_for(option)}%" do
        "#{option.get_vote_count}"
      end
    end
  end
end

polls_controller 显示

def show
  @poll = Poll.includes(:vote_options).find_by_id(params[:id])
  @vote = Vote.find_by_id(params[:id])
  @users = @poll.users
  @comments = Comment.with_details.all

end

所以在 polls/show.html.erb 上我需要类似的东西:

<% if option.get_vote_count.any > 50 %>
do something 
<% end %>

如何修复上面的代码以使其正常工作?我应该在 show action 下的 polls_controller 上添加什么?

提前致谢。

米尔科·卡塔布里加

这就是解决方案。感谢@Ash 为我指明了正确的方向:

  <% @poll.vote_options.each  do |option| %>
    <% if option.get_vote_count > 50 %>

    <h4> Condition met! </h4>
    <% end %>
    <% end %>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Rails充当Votable检查以查看用户是否登录以进行投票

Flask应用程序已达到QueuePool限制

Rails多态投票结构

更新投票计数器Rails Ajax请求

已达到免费开发配置文件的最大应用程序数量

Rails新增了“ -T”选项,是否可以创建未经测试的应用程序?

如何检查 rufus-scheduler 是否已经为我的 Rails 应用程序运行

免费开发配置文件的应用程序数量已达到上限。Xcode 11.5

Ruby-on-Rails投票部分路由

对Rails 4中的帖子进行投票实施

Rails重置Thumbs_up投票

带有 dropzonejs-rails 文件上传选项的 Hello world rails 应用程序

无法在Rails应用程序中获取关联的值

如何将自定义投票按钮添加到Rails应用

我在Rails中实现简单的投票系统是否有效?

如何在运行时检查 rails 应用程序是否在 sidekiq 工作器的上下文中运行?

如何在运行时检查我的Rails应用程序是否在开发环境或生产环境中运行

检查倒计时是否已达到零并更新 UILabel

在不移动文件指针的情况下检查文件指针是否已达到EOF?

是否可以在同一域上运行Rails应用程序和React应用程序?

Rails - 无法创建新的 Rails 应用程序

Rails:如何使用Rails应用程序转换引导模板?

Rails:从Rails应用程序中为Python调用virtualenv

Rails Gem未在Rails应用程序中加载

Ruby on rails rails-devise-roles 示例应用程序

在创建新的Rails应用程序时指定rails版本

Ruby on Rails完整应用程序模板

Rails应用程序全局定义

Rails应用程序中的CSS覆盖