充当可投票路由错误

时间:2015-08-05 22:54:41

标签: ruby-on-rails

我目前正在更新我过去制作的使用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 %>

这看起来应该非常简单 - 我不知道为什么它之前有效,不再有用。

2 个答案:

答案 0 :(得分:0)

Rails正在尝试映射传入的GET请求,并且正在失败,因为正如您所说,正确的HTTP方法是该URL的PUT。在您正在使用的任何浏览器上加载开发工具,看看实际的HTML和请求是什么样的。

答案 1 :(得分:0)

我有同样的问题。正如@hoffmanc提到的那样使用button_to代替link_to,它应该正常工作。