让我简单解释一下我如何使用这些路线,然后向您展示我正在使用的代码。我希望以下情况发生:
hearing-providers/any-text-but-a-state-abbreviation -> dispensers controller
hearing-providers/TX -> regions#show
hearing-providers/TX/dallas -> cities#show
这是我尝试的代码:
resources "hearing-providers", controller: 'dispensers', as: 'dispensers' do
constraints( region_id: /A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY]/ ) do
collection do
get ':state_abbreviation' => 'regions#show', :as => :region
get ':state_abbreviation/:city_name' => 'cities#show', :as => :city
end
end
end
问题在于:
路径是什么并不重要,我总是被路由到区域控制器。约束设置似乎无法正常工作。
答案 0 :(得分:2)
您已为region_id
定义了约束,但您未在路线中使用它。将约束更改为:
constraints( state_abbreviation: /A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY]/ ) do
一切都应该有效。