自定义Rails操作

时间:2013-06-27 04:15:55

标签: ruby-on-rails ruby ruby-on-rails-3

我正在尝试在rails中创建cusotm操作。我虽然它会工作,但由于某种原因,它没有看到行动已经显示。我记得在某个地方我可能要设置一些东西,但我不记得了。

这是我的路线档案

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

在我的佣金路线中,这会产生以下

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

所以当我去... api / v1 / friends / cancel.json看到它创建的api说找不到show actions。

我错过了什么吗?

这是我得到的错误

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

我的控制器有以下方法

def cancel
  ...
end

3 个答案:

答案 0 :(得分:1)

如果您在浏览器中访问/api/v1/friends/cancel.json,它将执行GET而不是DELETE并使用ID“取消”调用show方法

要正确测试,请使用像curl这样的东西。

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

马塔

答案 1 :(得分:0)

您可以使用RESTClient来测试它。

这是一个了不起的FireFox RESTClient Add-ons

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

实际上你需要请求DELETE而不是GET,因为马特以前回答过。点击api/v1/friends/cancel.json您请求GET方法。

答案 2 :(得分:0)

试试这个。改变你的路线

  resources :friends do
    member do
      delete :cancel
    end
  end

您可以通过

调用此方法
cancel_friend_path(friend_object)

在FriendsController中编写一个方法

def cancel
  whatever you wanna do.
end