ruby-on-rails – Ruby on rails form_for和不可数模型

<% form_for(@software) do |f| %>

正在生成一个如下所示的表单标记:

<form action="/software.%23%3Csoftware:0x24b2eac%3E" ...

软件模型有点特殊,因为我已经把它变成了不可数的(软件并不适合我)

environment.rb:
ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w( software )
end

但我确实命名了一个单一的形式来让路线发挥作用

map.resources :software, :singular => :software_item

像这样修改form_for:

<% form_for(@software, :url => software_item_path) do |f| %>

产生正确的输出,所以也许我会以错误的方式处理整个不可数的事情?通常有更好的方法使用具有相同单数和复数字的模型吗?

最佳答案 我知道这个问题已经很老了但我在Rails 4.1上遇到了类似的问题.

根据
Inflection doc,inflect.uncountable应该定义:

[…] uncountable words that shouldn’t be attempted inflected.

然而,由于某种原因,这是不够的(我会潜入源头并看看,一旦我有时间,看看会发生什么)

无论如何,在config / initializers / inflections.rb中使用inflect.irregular而不是inflect.uncountable似乎可以做到这一点

ActiveSupport::Inflector.inflections(:en) do |inflect|
  inflect.irregular 'software', 'software'
end
点赞