【问题标题】:Rails 2 vs Rails 3: Why are route globs no longer split?Rails 2 vs Rails 3:为什么路由球不再分裂?
【发布时间】:2013-08-30 23:53:27
【问题描述】:

在 Rails 2 中,如果我有以下路线:

get 'show/:user_id(/*tags)' => 'show#tags', :as => 'show_tags'

我希望从 show/123/foo/bar 回来:

params[ :tags ] # [ 'foo', 'bar' ]

现在,在 Rails 3 中,它返回:

params[ :tags ] # 'foo/bar'

知道他们为什么要改变这个吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-2 glob


    【解决方案1】:

    rails 中的路由器已针对 Rails 3.0 完全重写。 The Rails Guide 对此主题进行了很好的概述。我只会将其视为主要版本之间过渡的众多 BC 重大更改之一。

    修复非常简单 - 只需对您的操作稍作改动即可。

    tags = params[:tags].split(/\//).reject(&:empty?)
    

    【讨论】:

    • 谢谢。遗憾的是,我在技术上必须在路由器和操作中双重指定 glob。不是很干,但非常感谢您的洞察力!
    • 有什么简单的方法可以覆盖 Rails 当前的工作方式以使其默认行为像以前一样?
    • @JasonTFeatheringham 我不知道;不过,我不是路由器内部的专家。
    猜你喜欢
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多