在 Ruby on Rails 中,routes.rb,如果我们创建一个“命名路由”
map.something ":a/:b", :controller => 'foobar'
它还将创建控制器something_path
和something_url
视图中可用的两种方法。是否map.connect
也创造了类似的东西?不然这样是不是map.connect
有点吃亏?我检查了一下connect_path
,connect_url
两者都不是自动创建的。
在 Ruby on Rails 中,routes.rb,如果我们创建一个“命名路由”
map.something ":a/:b", :controller => 'foobar'
它还将创建控制器something_path
和something_url
视图中可用的两种方法。是否map.connect
也创造了类似的东西?不然这样是不是map.connect
有点吃亏?我检查了一下connect_path
,connect_url
两者都不是自动创建的。
你的想法是正确的。map.connect
不创建something_path
and something_url
。这就是命名路由的目的,例如map.something
:创建“名称”,因此名称为“命名路由”。
命名路由可以被认为是命名map.connect
路由。map.connect
只是建立一个指向控制器内动作的路由。但是在任何地方一次又一次地调用路线会很痛苦。使用命名路由更具可读性。的优点map.connect
是可以连接到任何控制器动作。如果您仔细阅读 routes.rb 文件,您会发现以下两个语句的优先级最低:
Note: These default routes make all actions in every controller accessible via GET requests. You should
consider removing or commenting them out if you're using named routes and resources.
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
如果您注释掉以上两行,您将无法到达任何路线,除了您使用命名路线/资源定义的路线。