【问题标题】:How to embed multiple tags in Rails routes, like Stack Overflow如何在 Rails 路由中嵌入多个标签,如 Stack Overflow
【发布时间】:2010-03-29 17:09:47
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails routing tags


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      然后你就可以访问params[:tags],这将是像'ruby+rails'这样的字符串。你可以简单地通过'ruby+rails'.split('+') 把它变成一个数组。

      这样您就可以轻松地将新标签添加到该数组中,并使用my_array_with_tags.join('+') 将其转回字符串。

      【讨论】:

        猜你喜欢
        • 2011-11-16
        • 1970-01-01
        • 2015-09-12
        • 2011-07-26
        • 2012-02-21
        • 1970-01-01
        • 2011-02-24
        • 1970-01-01
        • 2018-09-03
        相关资源
        最近更新 更多