ruby-on-rails – Rails中的浅路由3

ruby-on-rails – Rails中的浅路由3,第1张

概述在我的rails 3应用程序中使用我的路线时,我希望有这样的浅路线: /san-francisco/union-square 但我的路由器坚持让他们这样: /cities/san-francisco/neighborhoods/union-square 我已将它用于我的routes.rb shallow do resources :cities do resources :neighb 在我的rails 3应用程序中使用我的路线时,我希望有这样的浅路线:

/san-francisco/union-square

但我的路由器坚持让他们这样:

/citIEs/san-francisco/neighborhoods/union-square

我已将它用于我的routes.rb

shallow do  resources :citIEs do    resources :neighborhoods do      resources :locations    end  endend

但我仍然有这个:

city_neighborhood_locations GET  /citIEs/:city_ID/neighborhoods/:neighborhood_ID/locations(.:format)

不应该看起来像:

city_neighborhood_locations GET  /:city_ID/:neighborhood_ID/:ID(.:format)

我不知道如何解决这个问题,另外我不确定我的链接是什么问题,我希望能够使用语法:

link_to neighborhood.name,[:city,neighborhood]

但是当请求到达控制器时,似乎反转了:ID和:neighborhood_ID,对此的任何帮助都会非常有用!

解决方法 你正在寻找的东西通常不被称为“浅路由”.

正如Rails定义的那样,浅层路由看起来像这样:

city_neighborhoods         GET  /citIEs/:city_ID/neighborhoodsnew_city_neighborhood      GET  /citIEs/:city_ID/neighborhoods/new(create_city_neighborhood) POST /citIEs/:city_ID/neighborhoodsneighborhood               GET  /neighborhoods/:neighborhood_ID

没有浅路由,最后一条路线将是:

city_neighborhood          GET  /citIEs/:city_ID/neighborhoods/:neighborhood_ID

浅路由允许您将资源嵌套在另一个资源(在本例中为城市下的邻域)下,但在不需要嵌套时为嵌套资源提供绝对/非嵌套路由.

当您使用不依赖于父资源的ID的唯一标识符引用嵌套资源时,这是有意义的.在你的例子中,这不是真的(在旧金山之外可能有一个“联合广场”;肯定会有像“唐人街”这样的重复),所以你可能不希望这种情况下的浅路线.

你想要的是依赖于位置的路由,其中​​假定/固定资源的类型取决于它在URL中出现的位置. (例如,根据您概述的计划,除了“邻居”之外,您不能拥有“城市”.)

我不认为默认情况下Rails资源命令会支持它,但您可以使用手动匹配命令来执行此 *** 作.这不是我的头脑:

match ":city_ID",:controller => "citIEs",:action => "show"match ":city_ID/:neighborhood_ID",:controller => "neighborhoods",:action => "show"

这仍然是RESTful /基于资源的,它只是没有使用标准的Rails命名路由方式.

总结

以上是内存溢出为你收集整理的ruby-on-rails – Rails中的浅路由3全部内容,希望文章能够帮你解决ruby-on-rails – Rails中的浅路由3所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247665.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存