:method put: 不工作而是 Get 方法

:method put: not working instead Get method

所以我正在尝试使用以下路线:

<%= link_to like_post_path(@post), :method => :put do %>

但我不知道为什么使用 GET 方法而不是 PUT

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

对我来说毫无意义..

myroutes.rb:

 resources :posts do
    member do
        put "like" => "posts#upvote"
        put "dislike" => "posts#downvote"
    end

您使用的格式正确,您的代码应该生成如下内容:

<a data-method="put" href="...">

从您的路由错误消息中我们可以得出结论,它不是使用 POST_method=put 参数发送的。所以,问题一定是你没有包含 jQuery 和 Rails jQuery 扩展名 javascript 文件。

一个简单的解决方法是在您的页面中包含 application.js 文件(默认包含 jquery 和 rails js 扩展名)。

link_to 签名:

link_to(name = nil, options = nil, html_options = nil, &block)

根据文档,:method 属于选项散列。

打电话

<%= link_to like_post_path(@post), :method => :put do %>

结果放入

  • 姓名:like_post_path(@post),
  • 选项:无,
  • html_options: { 方法: :put }

来自Hash

散列也常被用作在函数中命名参数的一种方式。请注意,下面没有使用括号。如果散列是方法调用的最后一个参数,则不需要大括号,从而创建一个真正干净的接口:

编辑

<%= link_to like_post_path(@post), { method: :put } do %>

引导您实现目标。