首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查是否以特定的投票权重对范围进行表决,是否具有可投票性。

检查是否以特定的投票权重对范围进行表决,是否具有可投票性。
EN

Stack Overflow用户
提问于 2021-11-23 16:06:35
回答 1查看 46关注 0票数 0

我在我的rails应用程序中使用了可投票 gem,让用户可以选择在不同的作用域下的资源上留下1-5的评级。

以
为例,用户可以对位置1-5、价格1-5等进行评分。

我现在有这段代码来检查用户是否对特定的作用域进行了评级。但是我怎样才能检查vote_weight的投票结果呢?他们是评级1,2,3,4还是5?

这里:这是我的代码,用于检查他们是否对特定的范围进行了投票:

代码语言:javascript
复制
    <% if (user_signed_in?) && (current_user.voted_for? @stadium, :vote_scope => ‘location) %>
    <p>Current user has rated the location for this Stadium</p>    
    <% else %>
    <p>Current user has NOT rated the location for this Stadium</p>    
    <% end %>

,这是我保存选票的代码:

代码语言:javascript
复制
<%= link_to like_stadium_path(@stadium, :score => 1, :vote_scope => ‘location’), method: :put do %>
<button class="mt-4 w-full border-primary-500 border border-transparent rounded-md py-3 px-8 flex items-center justify-center text-base font-medium text-primary-500 hover:bg-primary-700 hover:text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">
Vote 1
</button>
<% end %>
<%= link_to like_stadium_path(@stadium, :score => 2, :vote_scope => 'location'), method: :put do %>
<button class="mt-4 w-full border-primary-500 border border-transparent rounded-md py-3 px-8 flex items-center justify-center text-base font-medium text-primary-500 hover:bg-primary-700 hover:text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">
Vote 2
</button>
<% end %>
    
<%= link_to like_stadium_path(@stadium, :score => 3, :vote_scope => 'location'), method: :put do %>
<button class="mt-4 w-full border-primary-500 border border-transparent rounded-md py-3 px-8 flex items-center justify-center text-base font-medium text-primary-500 hover:bg-primary-700 hover:text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">
Vote 3
</button>
<% end %>
    
<%= link_to like_stadium_path(@stadium, :score => 4, :vote_scope => 'location'), method: :put do %>
<button class="mt-4 w-full border-primary-500 border border-transparent rounded-md py-3 px-8 flex items-center justify-center text-base font-medium text-primary-500 hover:bg-primary-700 hover:text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">
Vote 4
</button>
<% end %>
    
<%= link_to like_stadium_path(@stadium, :score => 5, :vote_scope => 'location'), method: :put do %>
<button class="mt-4 w-full border-primary-500 border border-transparent rounded-md py-3 px-8 flex items-center justify-center text-base font-medium text-primary-500 hover:bg-primary-700 hover:text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">
Vote 5
</button>
<% end %>

stadiums_controller.rb

代码语言:javascript
复制
def upvote 
@stadium.upvote_by current_user, :vote_scope => params[:vote_scope], :vote_weight => params[:score]
redirect_back(fallback_location: root_path)
end 

def downvote #deletes the vote from DB
@stadium.unliked_by current_user, :vote_scope => params[:vote_scope]
redirect_back(fallback_location: root_path)
end

routes.rb

代码语言:javascript
复制
  resources :stadiums do
    member do
      put "like", to: "stadiums#upvote"
      put "unvote", to: "stadiums#downvote"
    end
  end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-24 04:17:31

您可以创建一个类似于方法在……上面?的方法,但是返回权重而不是检查exists?

代码语言:javascript
复制
class User < ApplicationRecord
  acts_as_voter

  def vote_weight_on(votable, vote_scope:)
    find_votes(
      votable_id: votable.id, 
      votable_type: votable.class.base_class.name, 
      vote_scope: vote_scope
    ).pluck(:vote_weight).first
  end
end


current_user.vote_weight_on(@stadium, vote_scope: "location")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70084102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档