0

我正在尝试将 Upvote 函数与acts_as_votablegem 结合使用。我遇到的问题是,当我将鼠标悬停在 Upvote 链接上时,我可以看到comment.idURL 预览没有给出,然后当我单击 Upvote 时,错误消息告诉我:

Couldn't find Comment with 'id'=#
<Comment::ActiveRecord_Relation:0x007f813b169658> 

我视图中的评论循环如下所示:

 <div class="box">
 <% @comment.each do |w| %>
    <tr>        
      <td><b><%= w.title %></b></td><br>
      <td><%= w.location %></td><br>
      <td><%= w.body %></td><br> 
      <%= link_to "upvote", like_comment_path(@comment), method: :put 
      %><br>
    </tr>
  <% end %>
 </div> 

还有我的CommentsController

def upvote
  @comment = Comment.find(params[:id])
  @comment.upvote_by current_user
  redirect_to comments_path
end

还有我的配置/路线

resources :comments do
  member do
    put "like", to: "comments#upvote"
    put "dislike", to: "comments#downvote"
  end
end  

这感觉应该是非常简单的事情,但我就是不知道为什么没有给出 id,所以非常感谢帮助:-)

4

1 回答 1

0

我假设您的@comment 是评论的集合。如果是这样,那么您应该将您的 @comment 变量重命名为 @comments 并在您的视图中遍历 @comments 集合,如下所示:

<div class="box">
 <% @comments.each do |comment| %>
    <tr>        
      <td><b><%= comment.title %></b></td><br>
      <td><%= comment.location %></td><br>
      <td><%= comment.body %></td><br> 
      <%= link_to "upvote", like_comment_path(comment), method: :put 
      %><br>
    </tr>
  <% end %>
 </div> 

如您所见,您可以创建一个链接来更新您的评论项目,如下所示: <%= link_to "upvote", like_comment_path(comment), method: :put

于 2017-12-04T09:40:34.530 回答