我知道在Rails中我们遵循惯例。我们应该用复数形式命名控制器。最近,我聘请了一位自由职业者来帮助我完成Rails应用程序的一部分,因为我对这个框架和ruby真的很陌生。我有一个PortfolioController
——这感觉很好,因为公文包是一个条目的容器(谁说"我有公文包"?)。自由职业者说这是不对的,我会遇到不遵守惯例的麻烦,并将其重命名为PortfoliosController
。我问了好几次,如果我把控制器命名为PortfolioController
而不是PortfoliosController
,我会遇到什么确切的问题,除了"你会有问题"之外,我没有得到任何解释。
那么,有人能告诉我这些问题是什么吗?
最简单的原因是,其他参与该项目的人在编写代码时可能会用复数形式引用它,然后在"WTF?"的未指定时间段后,当他们试图找出自己做错了什么时,必须意识到"哦,他们决定不在那个控制器中遵循惯例"。同样,从语义上讲,您的控制器是Portfolio表中所有Portfolio的控制器。
代码方面,您将遇到路由问题。您将不得不制定一系列非标准路由,因为默认情况下http://my_app/portfolios
会转到控制器的index
操作。然后显示一个带有http://my_app/portfolios/1
的特定公文包,该公文包将显示带有1
的id
的公文包。因此,请准备在config/routes.rb
文件中创建和维护大量自定义路由。对于名称相同的东西,无论是复数还是单数,你都会看到类似的问题,比如equipment
,你可以有一台设备或多台设备。请参阅:当型号单数和复数名称相同时(例如设备、物种),轨道连接路径和路由错误。它不仅会使您的路由不稳定,还会在portfolio_path
或portfolio_url
等方法中引发冲突。