当Rails路由具有多个单词时,它无法读取约束

时间:2017-10-31 08:03:09

标签: ruby-on-rails regex ruby-on-rails-4

我在这里有Rails路由的范围和约束

scope constraints: { category: /#{ CATEGORY_NAMES }/,
                     location: /#{ LOCATION_NAMES }/,
                    id:        /[0-9]+/ } do
  get ':category/:label-:location-:id', to: 'categories#show', as: :my_page  
end

:label可以是任何参数化字符串(例如,need-something-here)

虽然:location必须与LOCATION_NAMES

匹配
LOCATION_NAMES = "california|new-york|japan|china"

我的位置问题有2个单词,如纽约/纽约

路由不断获得new约束中包含的:label

Parameters: {"category"=>"music", "title"=>"need-something-here-new", "location"=>"york", "id"=>"111"}

并且只有york被视为位置...

我是Rails的新手,我还不熟悉路由。希望你能帮助我。

我已经尝试过......在约束中添加title: /.*(?=\.)/,但它无效......问题仍然存在。

1 个答案:

答案 0 :(得分:0)

看起来你的routes.rb在初始化程序之前被初始化,你已经在其中定义了常量。

尝试在路径文件中手动要求您自己的初始化程序具有已定义的常量。

require Rails.root.join('config', 'initializers', 'constants.rb')

原始的排名/答案在这里找到: Can routes.rb Access Initializers' code?