当在Stack Overflow上选择一个标签时,它会被添加到URL的末尾。添加第二个标记,它将添加到第一个标记之后的URL末尾,并带有+
分隔符。例如:
http://stackoverflow.com/questions/tagged/ruby-on-rails+best-practices
这是如何实施的?这是路由增强或TagsController
中包含的某些逻辑吗?最后,如何“提取”这些标记进行过滤(假设它们不在params[]
数组中)?
答案 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('+')
将其重新转换为字符串。