rails 4 grouped_collection_select не работают

#ruby-on-rails #attributes #models #grouped-collection-select

#ruby-on-rails #атрибуты #Модели #сгруппированный-коллекция-выбор

Вопрос:

у меня проблема с моим приложением. У меня есть две пары моделей

первый:

           class Nazione < ActiveRecord::Base
                has_many :regiones

                accepts_nested_attributes_for :regiones
                attr_accessible :nome, :regiones_attributes
          end
  

и

          class Regione < ActiveRecord::Base
               belongs_to :nazione
               attr_accessible :nome, :nazione_id
         end
  

и вторая пара:

      class Macrocategorie < ActiveRecord::Base
       has_many :categories
       accepts_nested_attributes_for :categories
       attr_accessible :nome, :categories_attributes
     end
  

и

       class Categorie < ActiveRecord::Base
         belongs_to :macrocategorie

         attr_accessible :nome, :macrocategorie_id
      end
  

они используются для формы в другой модели с именем Modulo1 :

      class Modulo1 < ActiveRecord::Base
         attr_accessible :nazione_organizzazione,:regione_organizzazione,:macrocat_sett_scient ,:cat_sett_scient
  

в форме Modulo1, когда я использую:

       <%= f.label :Nazione%><br />
      <%= f.collection_select :nazione_organizzazione, Nazione.order(:nome), :nome, 
                                         :nome,{:prompt => "Seleziona una Nazione"} %>

     <%= f.label :Regione %><br>
     <%= f.grouped_collection_select :regione_organizzazione, Nazione.order(:nome), 
               :regiones, :nome, :nome, :nome, {:prompt => "Seleziona una Regione"} %>
  

это работает! но если я использую

      <%= f.label :Settore_Scientifico %><br>
     <%= f.collection_select :macrocat_sett_scient, Macrocategorie.order(:nome), :nome, 
                                  :nome, {:prompt => "Seleziona una Macrocategoria"} %>
     <%= f.grouped_collection_select :cat_sett_scient, 
                           Macrocategorie.order(:nome),:categories,:nome, :nome,:nome,  
                                              {:prompt => "Seleziona una Categoria"} %>
  

это не работает!!!
ошибка заключается в следующем:

       uninitialized constant Macrocategorie::Category
  

Кто-нибудь может помочь мне решить эту проблему?

Ответ №1:

Rails не может определить, какому классу принадлежит другой конец ассоциации, потому что имена ваших классов не на английском. Вы можете задать имя класса явно:

 class Macrocategorie < ActiveRecord::Base
  has_many :categories, class_name: 'Categorie'
end
  

Другой альтернативой является определение нового перегиба в config/intializers/inflections.rb

 ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'categorie', 'categories'
end