我有一个名为ActiveDns
的模型。我跑的时候
rails g scaffold_controller ActiveDns
我收到了消息
使用单一化版本检测到模型的多个版本。用--force-plural覆盖。
现在,生成控制器和视图假装单数为ActiveDn
而复数为ActiveDns
,我得到像link_to new_dn_path
这样的愚蠢内容。 --force-plural
参数似乎无法解决此问题:
rails g scaffold_controller ActiveDns --force-plural
仍然导致控制器使用名为@active_dn
的变量和使用new_dn_path
的视图,使用rails 3.2.3。我正在尝试使用rails d scaffold_controller ActiveDns
删除文件。
这样做的正确方法是什么?
答案 0 :(得分:16)
这样做的正确方法是什么?
我将inflections用于document无数实体。
配置/初始化/是inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable "ActiveDns"
end
然后你得到:
$ rails g scaffold_controller ActiveDns
create app/controllers/active_dns_controller.rb
invoke erb
create app/views/active_dns
create app/views/active_dns/index.html.erb
create app/views/active_dns/edit.html.erb
create app/views/active_dns/show.html.erb
create app/views/active_dns/new.html.erb
create app/views/active_dns/_form.html.erb
invoke test_unit
create test/functional/active_dns_controller_test.rb
invoke helper
create app/helpers/active_dns_helper.rb
invoke test_unit
create test/unit/helpers/active_dns_helper_test.rb
这是你想要的吗?
答案 1 :(得分:13)
我使用rails-3.2进行了测试(我猜它应该与rails-3.x配合使用)
打开config/initializers/inflections.rb
并添加规则:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'dns', 'dnses'
end
生成控制器
rails g scaffold_controller ActiveDns
并将路线添加到config/routes.rb
文件
resources :active_dnses
然后你应该看到:
$ rake routes
active_dnses GET /active_dnses(.:format) active_dnses#index
POST /active_dnses(.:format) active_dnses#create
new_active_dns GET /active_dnses/new(.:format) active_dnses#new
edit_active_dns GET /active_dnses/:id/edit(.:format) active_dnses#edit
active_dns GET /active_dnses/:id(.:format) active_dnses#show
PUT /active_dnses/:id(.:format) active_dnses#update
DELETE /active_dnses/:id(.:format) active_dnses#destroy
答案 2 :(得分:0)
我想分享我如何解决我的问题。
我在Pacman
下有一个名称为Data_Warehouse
的MVC。
Pacman
是专有名词。 (不能是Pacmen
和e
,而应该是Pacmans
和s
)
Data_Warehouse
就像一个平台名称。 (可以是任何一种,在这种情况下,其DataWarehouse::Pacman
)
所以,我有
模型名称-models/data_warehouse/pacman.rb
视图名称-views/data_warehouse/pacmans/index.slim
控制器名称-controller/data_warehouse/pacmans_controller.rb
问题是,Rails读取了此路径
data_warehouse_pacmans_path
为
data_warehouse_pacmen_path
由于多元化。
所以
我通过添加
解决了这个问题ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( pacmans )
end
到Rails中的inflections.rb
文件。
希望这会有所帮助