在Rails中使用块语法时约束不起作用

时间:2017-04-26 08:26:25

标签: ruby-on-rails routing

我尝试向一组范围的路线添加约束,如下所示:

constraints locale: 'de' do
  scope 'magazin' do
    get '', to: 'magazine#index', as: 'magazine'
    # more routes
  end
end

它没有使用限制。 而将限制放在单一路线上的工作正常。

get '', to: 'magazine#index', as: 'magazine', constraints: { locale: 'de' }

我尝试在范围块内外的不同位置使用constraints块。结果没有任何变化。

Rails Guide for Routing有一个我几乎复制过的例子:

namespace :admin do
  constraints subdomain: 'admin' do
    resources :photos
  end
end

任何想法代码有什么问题?

1 个答案:

答案 0 :(得分:2)

如果没有整个routes.rb文件,很难说为什么它不能按预期工作。

是否有可能为locale定义某种范围?

想象一下......

scope '/:locale', locale: /de|en/ do
  # lots of routes so you are not aware of the scope
  constraints locale: "de" do
    scope 'magazin' do
      get '', to: 'magazine#index', as: 'magazine'
    end
  end
end

通过此操作,您实际上将locale的约束设置为deen。范围的约束优先于constraints块。

虽然从导轨指南中不清楚这一点,我发现merge request证明了我的论证。