ruby-on-rails – Ruby on Rails路由:具有更多参数的命名空间
发布时间:2020-12-17 03:30:37 所属栏目:百科 来源:网络整理
导读:我有一个名称空间“shop”.在该命名空间中,我有一个资源“新闻”. namespace :shop do resources :news end 我现在需要的是,我的“新闻”路线可以获得一个新参数: /shop/nike (landing page - goes to "news#index",:identifier = "nike")/shop/adidas (lan
我有一个名称空间“shop”.在该命名空间中,我有一个资源“新闻”.
namespace :shop do resources :news end 我现在需要的是,我的“新闻”路线可以获得一个新参数: /shop/nike (landing page -> goes to "news#index",:identifier => "nike") /shop/adidas (landing page -> goes to "news#index",:identifier => "adidas") /shop/nike/news /shop/adidas/news 所以我可以得到商店并过滤我的新闻. 我需要一条路线: /shop/:identfier/:controller/:action/:id 我测试了很多变化,但我不能让它运行. 任何人都可以给我一个提示?谢谢. 解决方法
如果您在数据库中有那些nike,adidas等,那么最直接的选择是使用匹配.
namespace :shop match "/:shop_name" => "news#index" match "/:shop_name/news" => "news#news" end 然而,在我看来,商店应该是你的资源.只需创建一个ShopsController(您不需要匹配的模型,只需要一个控制器).那你可以做 resources :shops,:path => "/shop" resources :news end 现在您可以像这样访问新闻索引页面(/ shop / adidas): shop_path("adidas") 在NewsController中使用:shop_id来访问商店的名称(是的,即使它是_id它可以是一个字符串).根据您的设置,您可能希望新闻成为单一资源,或者将新闻方法作为收集方法. 你还确定只重命名新闻资源不是你想要的吗? resources :news,:path => "/shop" do get "news" end 请记住,控制器名称和控制器数量也不一定与您的型号匹配.例如,您可以拥有一个没有NewsController的Ne??ws模型和一个没有Shop模型的ShopsController.如果有意义,您甚至可以考虑将Shop模型添加到数据库中.如果这不是您的设置,那么您可能会过度简化您的示例,您应该提供更完整的设置说明. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |