No route matches [GET] "/links/1/like" with acts_as_votable

14 浏览
0 Comments

No route matches [GET] "/links/1/like" with acts_as_votable

我正在尝试按照这个教程https://www.youtube.com/watch?v=7-1HCWbu7iU来实现acts_as_votable gem。似乎一切都运行正常,除了当我点击upvote或downvote时,出现以下错误:No route matches [GET] "/links/1/like"。这是upvote/downvote功能的代码:


          <%= link_to like_link_path(link), method: :put, class: "upvote-image" do %>
          <% end %>

这是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 Comments

问题出现的原因是在代码中使用了错误的link_to方法的用法。在这个例子中,使用了like_path作为link_to的参数,但是like_path并没有被定义。因此,程序无法找到匹配的路由。解决方法是将like_path替换为正确的路径。

0
0 Comments

问题原因:在Windows上开发时,出现了与Javascript相关的问题。为了解决这个问题,按照一个解决方案进行了操作,但这不是真正的解决办法,只是简单地从应用中移除了js。真正的解决办法是使用与Windows兼容的正确版本的coffee script。

解决方法:确保应用中存在js文件,并且包含//= require jquery_ujs。这样可以避免所有链接被当作GET请求调用的问题。

问题的根本原因是应用中缺少js文件,因此也缺少了//= require jquery_ujs,导致所有链接都被当作GET请求调用。

感谢Peck的帮助。

0
0 Comments

问题的原因是链接的方法使用了GET方法,而不是PUT方法。可能是由于链接代码没有正确编写导致的。可以尝试将链接代码中的method改为:put,以修复这个问题。需要注意的是,如果要进行测试,最好将链接的HTML代码包含在问题中,这样我们可以检查它是否被正确渲染。

0