2010-10-20 12 views
4
<% form_for(@software) do |f| %> 

produit une étiquette de forme qui ressemble à ceci:Ruby on Rails form_for et modèles indénombrables

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

Le modèle de logiciel est un peu spécial, que je l'ai fait indénombrable (logiciels n » ai pas t très bien avec moi)

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

mais je ne nommer que singulier pour obtenir les itinéraires de travail

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

Modification form_for comme ceci:

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

produit la sortie correcte, donc peut-être que je vais au sujet de la chose entière indénombrables, la mauvaise façon? Y a-t-il généralement une meilleure façon d'utiliser des modèles avec le même mot singulier et pluriel?

+0

Quel est le code dans le contrôleur qui crée @software? – drummondj

Répondre

2

Je sais que cette question est assez ancienne mais j'ai eu un problème similaire sur Rails 4.1. Selon le Inflection doc, inflect.uncountable devrait définir:

[...] mots qui ne devraient pas indénombrables être tentées fléchie.

Ceci est cependant insuffisant pour une raison quelconque (je vais plonger dans la source et un coup d'oeil et voir ce qui se passe une fois que j'ai le temps)

Quoi qu'il en soit, en utilisant inflect.irregular au lieu de inflect.uncountable dans config/initializers/inflections.rb semble faire l'affaire

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