Ruby on rails :方法put:不工作,而使用Get方法

Ruby on rails :方法put:不工作,而使用Get方法,ruby-on-rails,ruby,get,put,Ruby On Rails,Ruby,Get,Put,因此,我尝试使用以下路线: <%= link_to like_post_path(@post), :method => :put do %> 对我来说毫无意义 myroutes.rb: resources :posts do member do put "like" => "posts#upvote" put "dislike" => "posts#downvote" end 您使用的格式正确,代码应该生成如下内

因此,我尝试使用以下路线:

<%= link_to like_post_path(@post), :method => :put do %>
对我来说毫无意义

myroutes.rb:

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

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

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

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

一个简单的修复方法是在页面中包含
application.js
文件(默认情况下包括jquery和rails js扩展名)。

签名:

link_to(name = nil, options = nil, html_options = nil, &block)
根据文档,:方法属于选项哈希

召唤

<%= link_to like_post_path(@post), :method => :put do %>
:put do%>
投入使用的结果

  • 名称:like_post_path(@post)
  • 选项:无
  • html_选项:{method::put}

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

编辑

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


这是一个很好的建议,确保设置了data method=“put”,并确保您正在应用程序中重新查询
jquery\u ujs
。就是这样!!非常感谢你。问题是我的Jquery和Rails查询,因为您确定吗?
options
将是
{:method=>:put}
html\u选项是
nil
?我的错误,用正确的解决方案编辑了答案。(options={method::put}是所需的。)
<%= link_to like_post_path(@post), { method: :put } do %>