我应该在rails匹配中使用哪些路由:controller(/:action(/:id))或资源?

时间:2015-12-14 16:53:39

标签: ruby-on-rails ruby ruby-on-rails-4 routing

我使用匹配:controller(/:action(/:id))作为路由系统。

我没有看到有人使用这种类型的路由系统。所有人都在使用资源路线。

这是进行路由的最佳方式还是路由的最佳选择?

4 个答案:

答案 0 :(得分:2)

你遗失的是RESTful routing:)

答案 1 :(得分:1)

Deprecate method "match" in routes.rb

  

...建议是宣布“匹配”#39;将routes.rb中的方法视为已弃用和   以后(例如rails 5.0)把它放到"私人方法"部。

     

它会鼓励人们使用" pure"宁静的方法 - 像put这样的动词   发布等等,将提高他们的意义和目标的知识。 (得到   用于检索数据,POST用于状态更改请求)

     

为什么呢? - 我的观点在http://homakov.blogspot.ru/2012/04/whitelist-your-routes-match-is-evil.html

描述

答案 2 :(得分:1)

我认为@AndreyDeineko提供了一个很好的答案。

我之前注意到match :controller(/:action(/:id))的另一个问题是它可能会导致安全问题:

想象一下,您的application_controller.rb方法没有标记为private。由于所有其他控制器都继承自ApplicationController,所以每个人都可以通过猜测名称来调用这些方法。

答案 3 :(得分:1)

除非您正在创建API,否则您可以使用所需的任何路由。如果要创建API,则需要RESTful路由。资源为您提供宁静的路线。