:方法放:不工作而不是Get方法

时间:2016-05-25 16:52:42

标签: ruby-on-rails ruby get put

所以我试图使用以下路线:

<%= 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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

答案 1 :(得分:0)

Codepen签名:

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

根据doc,:方法属于选项哈希。

调用

/var/log

导致进入

  • name:like_post_path(@ postt),
  • 选项:nil,
  • html_options:{method :: put}

来自link_to

哈希也常用作在函数中使用命名参数的方法。请注意,下面没有使用括号。如果哈希是方法调用的最后一个参数,则不需要大括号,因此创建了一个非常干净的接口:

修改

sendmail

导致你想要实现的目标。