将参数传递给Rails中的自定义RESTful路由(使用:集合)

dwh*_*ite 5 routing ruby-on-rails

我正在尝试使用:collectionparam在我的RESTful路由中添加自定义路由,map.resources如下所示:

map.resources :products, :collection => { :tagged => :get }
Run Code Online (Sandbox Code Playgroud)

标记的操作采用:tag参数.我可以使用以下链接到URL路由: tagged_products_path(:tag => tag.name).我的问题是它生成的URL:

/products/tagged?tag=electronic
Run Code Online (Sandbox Code Playgroud)

我希望标签位于URL而不是标签中,如下所示:

/products/tagged/electronic
Run Code Online (Sandbox Code Playgroud)

当然这可以通过一个单独的命名路由来完成,但我想知道我是否遗漏了一些东西,并且有一种方法可以使用:collection哈希来做到这一点.

在此先感谢您的帮助

-Damien

Jon*_*ian 4

集合路由不支持这一点 - 您必须使用命名路由。

map.tagged_products '/products/tagged/:tag', 
  :controller => 'products', :action => 'tagged', :conditions => { :method => :get }
Run Code Online (Sandbox Code Playgroud)