我如何从Rails上删除act_as_votable gem投票

时间:2019-07-01 16:34:12

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

自从将act_as_votable添加到Rails中的帖子之后,我现在不再能够删除帖子。

我在microposts控制器的upvote和downvote函数中添加了@ micropost.destroy。技术上可行。但是具有负面影响,当我单击喜欢时也会删除帖子。

一些微职位控制器。

def destroy
  @micropost.destroy
  flash[:success] = "Micropost deleted"
  redirect_to request.referrer || current_user
end

def show
  @micropost = Micropost.find(params[:id])
end

def upvote
  @micropost = Micropost.find_by(id: params[:id])
  @micropost.upvote_from current_user
  redirect_to current_user
end

def downvote
  @micropost = Micropost.find_by(id: params[:id])
  @micropost.downvote_from current_user
  redirect_to feed_path
end

现在用户可以同时喜欢和删除帖子的帖子视图。

 <div class=“upvote”">
  <% if logged_in? %>
    <%= link_to like_micropost_path(@micropost), class:"like", 
   method: :put do %>
    <span class="voter"> That Was Funny</span>
  <% end %>

  <% elsif !logged_in? %>
    <%= link_to "Log In To Like Post", login_path, class: "like" 
  %>
  <% end %>
 </div>

 <span class="delete">
  <% if current_user?(@micropost.user) %>
  <%= link_to "Delete", @micropost, method: :delete, data: { 
 confirm: "Are You Sure?" } %>
  <% end %>
 </span>
<br>

我不使用downvote功能,因为我只允许upvotes。以当前形式,当我按Delete键时。当删除删除投票时,实际上实际上是结束投票,而不是像这样删除:

 SQL (2.6ms)  UPDATE "microposts" SET "cached_votes_total" = $1, 
 "cached_votes_up" = $2, "cached_votes_score" = $3, 
 "cached_weighted_total" = $4, "cached_weighted_score" = $5, 
 "cached_weighted_average" = $6, "updated_at" = $7 WHERE 
 "microposts"."id" = $8  [["cached_votes_total", 1], 
 ["cached_votes_up", 1], ["cached_votes_score", 1], 
["cached_weighted_total", 1], ["cached_weighted_score", 1], 
["cached_weighted_average", 1.0], ["updated_at", "2019-07-01 
16:26:30.667921"], ["id", 20]]
(1.5ms)  COMMIT
Redirected to http://0.0.0.0:3000/users/2
Filter chain halted as :upvote rendered or redirected
Completed 302 Found in 103ms (ActiveRecord: 57.1ms)```

我知道我必须在某处添加销毁以进行投票。但是我尝试说的所有地方似乎都行不通。任何帮助将不胜感激。

0 个答案:

没有答案