我正在尝试实现这个教程中所示的acts_as_votable gem https://www.youtube.com/watch?v=7-1HCWbu7iU
似乎一切都很好,除非我点击upvote或downvote,我得到这个错误:
No route matches [GET] "/links/1/like"
这是upvote / downvote函数的代码
<span class="upvote">
<%= link_to like_link_path(link), method: :put, class: "upvote-image" do %>
<% end %>
</span>
这是routes.rb文件:
resources :links do
member do
put "like", to: "links#upvote"
put "dislike", to: "links#downvote"
end
resources :comments
end
以下是links_controller
中的upvote和downvote操作def upvote
@link = Link.find(params[:id])
@link.upvote_by current_user
redirect_to :back
end
def downvote
@link = Link.find(params[:id])
@link.downvote_by current_user
redirect_to :back
end
有关如何解决这个问题的想法吗?
答案 0 :(得分:0)
问题似乎问题取决于使用GET
方法的链接,而不是PUT
:
No route matches [GET] "/links/1/like"
我只能猜测你的link_to
代码写得不正确:
<span class="upvote">
<%= link_to like_link_path(link), method: :put, class: "upvote-image" %>
</span>
您的其他代码看起来不错。如果您对此进行测试,最好的办法是在您的问题中显示链接的纯HTML - 这将使我们能够看到它是否正确呈现。
答案 1 :(得分:0)
我找到了答案,我在这里发布,以防有其他人遇到同样的问题。
我在Windows上开发。我有javascript问题,并在此处遵循此解决方案: https://stackoverflow.com/a/31972253/1690091
这删除了所有地方弹出的与javascript相关的错误,但这不是解决方案。这只是从我的应用程序中删除了js。
真正的解决方案是: https://stackoverflow.com/a/28331807/1690091
您需要使用与Windows兼容的咖啡脚本的适当版本。
总结一下:
我的应用程序中缺少js文件,因此//= require jquery_ujs
也丢失了,这就是为什么我的所有链接都被称为GET的原因。
@Rich Peck, 谢谢你的帮助。
答案 2 :(得分:-1)
试试这个
<span class="upvote">
<%= link_to like_path, method: :put, class: "upvote-image" do %>
<% end %>
</span>