自从将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)```
我知道我必须在某处添加销毁以进行投票。但是我尝试说的所有地方似乎都行不通。任何帮助将不胜感激。