我目前正在更新我过去制作的使用acts_as_votable gem的rails应用。相同的代码在过去没有任何问题。但是,每当我尝试“赞”一个帖子时,我都会收到此路由错误:
没有路线匹配[GET]“/ posts / 1 / like”
我不明白为什么Rails在过去的PUT工作时正在寻找GET路线。这是我的代码:
的routes.rb
resources :posts do
member do
put "like", to: "posts#vote"
put 'unlike', to: "posts#unvote"
end
end
posts_controller.rb
def vote
@post = Post.find(params[:id])
@post.liked_by current_user
redirect_to: @post
end
def unvote
@post = Post.find(params[:id])
@post.unliked_by current_user
redirect_to: @post
end
show.html.erb
<%= link_to 'Like', like_post_path(@post), method: :put %>
这看起来应该非常简单 - 我不知道为什么它之前有效,不再有用。
答案 0 :(得分:0)
Rails正在尝试映射传入的GET请求,并且正在失败,因为正如您所说,正确的HTTP方法是该URL的PUT。在您正在使用的任何浏览器上加载开发工具,看看实际的HTML和请求是什么样的。
答案 1 :(得分:0)
我有同样的问题。正如@hoffmanc提到的那样使用button_to
代替link_to
,它应该正常工作。