没有路线匹配[GET]" / links / 1 / like" with acts_as_votable

时间:2015-09-26 23:04:25

标签: ruby-on-rails ruby-on-rails-4 gem

我正在尝试实现这个教程中所示的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

有关如何解决这个问题的想法吗?

3 个答案:

答案 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>