在Ruby on Rails中路由别名

时间:2019-03-29 08:56:33

标签: ruby-on-rails ruby routes

在我的项目中,我有一个名为City的类,并且创建了别名BirthCity和ResidenceCity。我想以正确的方式更改route.rb文件。

我尝试添加

resources :birth_cities,  :path => :cities, as: => :cities 
resources :residence_cities,  :path => :cities, as: => :cities 

每次我调用birth_city_path时,我都希望它被引用到city_path。但出现以下错误:

syntax error, unexpected => (SyntaxError)
...ties,  :path => :cities, as: => :cities 
...                             ^~

有什么想法吗?我也尝试过这样修改它:

resources :birth_cities,:path => :cities,:as 'cities' 

但它仍然无法正常工作。

编辑:现在,sintax是正确的,但是我又遇到另一个错误

undefined method `birth_cities_path' for #<#<Class:0x00007f4b3cfcd6c0>:0x00007f4b21303950>

对于下一行

<%= guiFieldAutocomplete(f, :birth_city_id, { data: { autocomplete_source: birth_cities_path(col: "json_recordset_name") }}) %>

2 个答案:

答案 0 :(得分:0)

as: => :cities 

应该是

:as => :cities 

哈希文字的语法

{ :a => 3, "b" => 4 }

带有符号键的散列文字的新语法

{ a: 3, b: 4 }

这等于

{ :a => 3, :b => 4 }

短些

您正在混用这两种语法

答案 1 :(得分:0)

似乎您对新旧哈希语法感到困惑。

您应该替换此代码:

resources :birth_cities,  :path => :cities, as: => :cities
resources :residence_cities,  :path => :cities, as: => :cities 

使用

resources :birth_cities,  :path => :cities, :as => :cities
resources :residence_cities,  :path => :cities, :as => :cities 

as: => :cities更改为:as => :cities

在此处了解有关此语法的更多信息:https://stackoverflow.com/a/44005425/4797110