#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