当前位置: 首页 > 知识库问答 >
问题:

没有路由匹配[GET]"/link/1/like"与acts_as_votable

郏稳
2023-03-14

我正试图实现本教程所示的acts\u as\u votable gem
https://www.youtube.com/watch?v=7-1HCWbu7iU

似乎一切正常,除了单击upvote或downvote时,出现以下错误:

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

这是支持/反对票功能的代码

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

这就是路线。rb文件:

  resources :links do
    member do
      put "like", to:    "links#upvote"
      put "dislike", to: "links#downvote"
    end

    resources :comments
  end

以下是links\u 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个答案

贺俊楚
2023-03-14

试试这个

<span class="upvote">
  <%= link_to like_path, method: :put, class: "upvote-image" do %>
  <% end %>
</span>
危文乐
2023-03-14

我找到了一个答案,我把它贴在这里,以防有其他人有同样的问题。

我正在Windows上开发。我在javascript方面遇到了问题,并遵循以下解决方案:https://stackoverflow.com/a/31972253/1690091

这消除了到处出现的javascript相关错误,但这不是解决方案。这只是从我的应用程序中删除了js。

真正的解决方案在这里:https://stackoverflow.com/a/28331807/1690091

您需要使用与Windows兼容的正确版本的coffee脚本。

总结一下:

我的应用程序中缺少js文件,因此也缺少了/=require jquery\u ujs,这就是为什么我的所有链接都被称为GET。

@Rich Peck,谢谢你的帮助。

杜诚
2023-03-14

看起来问题在于您的链接具有GET方法,而不是PUT

没有路由匹配[GET]“/links/1/like”

我只能推测您的链接到代码的书写不正确:

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

您的其他代码看起来不错。如果您对此进行测试,最好的做法是在问题中显示链接的纯HTML,这将使我们能够查看它是否正确呈现。

 类似资料:
  • 我是刚来香港的,所以请容忍我:)我在windows服务器上作为主机托管我的APIhttp://supermarket.xxxx.com:5000 在Ubuntu盒上添加了如下服务(http://supermarket.xxxx.com已添加到主机文件中) HTTP/1.1 201创建日期: Thu,17 Dec2020 07:11:50GMT Content-Type: Application/j

  • Tango支持4种形式的路由匹配规则 静态路由 tg.Get("/", new(Action)) tg.Get("/static", new(Action))匹配 URL:/ 到 Action结构体的Get函数 匹配 URL:/static 到 Action结构体的Get函数 命名路由 tg.Get("/:name", new(Action)) tg.Get("/(:name)", new(Act

  • 注意:本部分是为v1 API编写的,但这些概念也适用于v2 API。它将在未来版本的v2 API中重新描述。 Envoy的路由匹配过程如下: HTTP请求的头域字段 host 或 :authority 与虚拟主机匹配。 按顺序检查虚拟主机中的每个路由表。如果匹配,则使用该路由并且不再匹配路由。 独立地,依次检查虚拟主机中的每个虚拟集群。如果匹配,则使用虚拟群集,不再进一步匹配集群。 返回 上一级

  • 上一篇文章我们说到路由的正则编译,正则编译的目的就是和请求的 url 来匹配,只有匹配上的路由才是我们真正想要的,此外也会通过正则匹配来获取路由的参数。 路由的匹配 路由进行正则编译后,就要与请求 request 来进行正则匹配,并且进行一些验证,例如 UriValidator、MethodValidator、SchemeValidator、HostValidator。 class RouteCo

  • 即时消息使用rails 5 我有一个叫普莱斯的模型。(有许多产品) Prices有一个名为Product的模型(属于price) 在这种情况下,我可以创建新产品,也可以销毁产品。 我的路线 在我的价格秀里 在我的产品编辑中 在我的产品控制器中 我的耙路线 问题是 当我点击提交按钮时,我发现了这个错误 谢谢你帮我

  • 我有两个感兴趣的文件:build。靴子 和src/clj/vidiot/server。clj 然后我,, 然后在我的浏览器中转到localhost:9090,终端打印。 我可以通过降级来解决这个问题:构建中的依赖项。引导至。 所以,我的问题是,为什么我不能在构建uberjar时使用(本文中的最新版本)?