如何在Rails路由中嵌入多个标记,例如Stack Overflow

时间:2010-03-29 17:09:48

标签: ruby-on-rails routing tags

当在Stack Overflow上选择一个标签时,它会被添加到URL的末尾。添加第二个标记,它将添加到第一个标记之后的URL末尾,并带有+分隔符。例如:

http://stackoverflow.com/questions/tagged/ruby-on-rails+best-practices

这是如何实施的?这是路由增强或TagsController中包含的某些逻辑吗?最后,如何“提取”这些标记进行过滤(假设它们不在params[]数组中)?

2 个答案:

答案 0 :(得分:1)

Vojto的回答是正确的,但请注意,您也可以在服务器端使用Route Globbing来干净利落地处理。定义为/:controller/*tags的路线将与/questions/ruby/rails/routing匹配,而在questions_controller中,params[:tags]将是包含['ruby','rails','routing']的数组。请参阅Routing docs

答案 1 :(得分:0)

我认为Rails并不介意params是否包含像+这样的符号。这意味着,您可以将所有标记作为一个参数进行访问,创建如下的路由:'/show/:tags'

然后,您可以访问params[:tags],其类似于'ruby+rails'。您只需执行'ruby+rails'.split('+')即可将其转换为数组。

通过这种方式,您可以轻松地将新标记附加到此数组,并使用my_array_with_tags.join('+')将其重新转换为字符串。

相关问题