0

我正在尝试在 Rails 中创建自定义操作。我虽然它会起作用,但由于某种原因它没有看到动作显示。我记得在某个地方我可能需要设置一些东西,但我不记得了。

这是我的路线文件

  resources :friends do
    collection do
      delete 'cancel'
    end
  end

在我的 rake 路线中,这会生成以下内容

cancel_api_v1_friends DELETE /api/v1/friends/cancel(.:format)                           api/v1/friends#cancel

所以当我去 ...api/v1/friends/cancel.json 查看它创建的 api 时说找不到显示操作。

有什么我想念的吗?

这是我得到的错误

The action 'show' could not be found for Api::V1::FriendsController

我的控制器有以下方法

def cancel
  ...
end
4

3 回答 3

1

如果您在浏览器中点击 /api/v1/friends/cancel.json,它将执行 GET 而不是 DELETE 并调用 ID 为“cancel”的 show 方法

要正确测试这一点,请使用 curl 之类的东西。

curl -i -H "Accept: application/json" -X DELETE http://localhost:3000/api/v1/friends/cancel.json

马塔

于 2013-06-27T04:20:52.993 回答
0

尝试这个。改变你的路线

  resources :friends do
    member do
      delete :cancel
    end
  end

您可以通过以下方式调用此方法

cancel_friend_path(friend_object)

并在 FriendsController 中写一个方法

def cancel
  whatever you wanna do.
end
于 2013-06-27T05:27:13.500 回答
0

您可以使用 RESTClient 对此进行测试。

这是一个了不起的FireFox RESTClient 附加组件

使用此插件,您可以使用 GET、PUT、POST、DELETE ... 等方法进行请求。

实际上,您需要像 Matt 之前回答的那样请求 DELETE 而不是 GET。击中api/v1/friends/cancel.json您请求 GET 方法。

于 2013-06-27T04:40:17.253 回答