没有路由匹配 [GET]“/links/1/like”和 acts_as_votable
No route matches [GET] "/links/1/like" with acts_as_votable
我正在尝试实现 acts_as_votable gem,如本教程中所示
https://www.youtube.com/watch?v=7-1HCWbu7iU
似乎一切正常,除了当我点击赞成票或反对票时,我得到这个错误:
No route matches [GET] "/links/1/like"
这是点赞/反对功能的代码
<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
中的赞成票和反对票操作
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
知道如何解决这个问题吗?
看起来问题出在您的 link 有一个 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>
你的其他代码看起来不错。如果您对此进行测试,最好的办法是在您的问题中为 link 显示纯 HTML - 这将使我们能够查看它是否被正确呈现。
我找到了这个问题的答案,我将其张贴在这里以防其他人遇到同样的问题。
我正在开发 Windows。我在使用 javascript 时遇到问题,并在此处遵循此解决方案:
这消除了随处可见的 javascript 相关错误,但这不是解决方案。这只是从我的应用程序中删除了 js。
真正的解决办法在这里:
您需要使用与 Windows 兼容的正确版本的咖啡脚本。
总结一下:
js 文件在我的应用程序中丢失,因此 //= require jquery_ujs
也丢失了,这就是为什么我的所有链接都被称为 GET。
@Rich Peck,
感谢您的帮助。
试试这个
<span class="upvote">
<%= link_to like_path, method: :put, class: "upvote-image" do %>
<% end %>
</span>
我正在尝试实现 acts_as_votable gem,如本教程中所示
https://www.youtube.com/watch?v=7-1HCWbu7iU
似乎一切正常,除了当我点击赞成票或反对票时,我得到这个错误:
No route matches [GET] "/links/1/like"
这是点赞/反对功能的代码
<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
中的赞成票和反对票操作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
知道如何解决这个问题吗?
看起来问题出在您的 link 有一个 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>
你的其他代码看起来不错。如果您对此进行测试,最好的办法是在您的问题中为 link 显示纯 HTML - 这将使我们能够查看它是否被正确呈现。
我找到了这个问题的答案,我将其张贴在这里以防其他人遇到同样的问题。
我正在开发 Windows。我在使用 javascript 时遇到问题,并在此处遵循此解决方案:
这消除了随处可见的 javascript 相关错误,但这不是解决方案。这只是从我的应用程序中删除了 js。
真正的解决办法在这里:
您需要使用与 Windows 兼容的正确版本的咖啡脚本。
总结一下:
js 文件在我的应用程序中丢失,因此 //= require jquery_ujs
也丢失了,这就是为什么我的所有链接都被称为 GET。
@Rich Peck, 感谢您的帮助。
试试这个
<span class="upvote">
<%= link_to like_path, method: :put, class: "upvote-image" do %>
<% end %>
</span>