Rails路由与URL参数

时间:2011-02-04 01:02:36

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

我有一个双头问题,希望你能帮助我。

作为一个上下文,我有一个带有请求模型/控制器/视图设置的rails应用程序。它用于向另一个用户发送请求并在更新操作中提供两个特定工具(尝试保持RESTful) - 接受和拒绝(接受或拒绝请求)。

所以我的问题是:

  • 首先,设置用于访问特定类型操作的URL的普遍接受的方法是什么(在这种情况下,接受或拒绝都是请求更新)?是使用参数(例如/requests/11?response=accept)传递它还是使用命名路线(例如/requests/11/accept

  • 更好
  • 其次,如果使用命名路由,如何确定哪个命名路由负责调用控制器?我认为您可以使用request.url()或类似内容来检查实际网址(例如/requests/11/accept),但这对我来说似乎是一种脆弱的方法。我试图找到其他可能的方法,但似乎找不到合适的方式。

1 个答案:

答案 0 :(得分:1)

我更喜欢/ requests / 11 /接受/ requests / 11?response = accept。

接受和拒绝是将改变请求资源状态的行为,因此对单个对象的PUT操作是合适的。

您可以在路线配置中定义路线,如下所示:

resources :requests do
  member {put :accept, :decline}
end

您将获得两条路线

accept_request maps to {:action=>"accept", :controller=>"requests"}
decline_request maps to {:action=>"decline", :controller=>"requests"}