在使用 has_many 为其集合提供的任何方法(例如“where”)时,我无法找到为什么在我的视图中出现以下错误:
NameError in History/hist_paquets_mesures#show Showing /var/www-opf/opf/app/views/history/hist_paquets_mesures/show.html.haml 其中第 19 行出现: 未初始化的常量 HistPaquetMesures::HistVersionsPaquetsMesure
我的(HAML)视图中导致此问题的部分:
// I want to make this work
//= @hist_paquet_mesures.hist_versions_paquets_mesures.where(:hist_origine_modification == nil).first.version
// So I debug with this, which is causing the same error
= debug @hist_paquet_mesures.hist_versions_paquets_mesures
我为在config/initializers/inflections.rb中使用的特殊单复数名称设置了一个例外:
ActiveSupport::Inflector.inflections do |inflect|
inflect.irregular 'pub_liste_horizon', 'pub_listes_horizon'
inflect.irregular 'hist_paquet_mesures', 'hist_paquets_mesures'
inflect.irregular 'hist_projet_connexe', 'hist_projets_connexes'
inflect.irregular 'hist_version_paquet_mesures', 'hist_versions_paquets_mesures'
inflect.irregular 'hist_origine_modification', 'hist_origines_modification'
end
复数、单数和分类方法在 rails 控制台上按预期工作:
"hist_versions_paquets_mesures".singularize => "hist_version_paquet_mesures"
"hist_versions_paquets_mesures".classify => "HistVersionPaquetMesures"
"hist_version_paquet_mesures".pluralize => "hist_versions_paquets_mesures"
我的app/model/hist_paquet_mesures.rb模型:
class HistPaquetMesures < ActiveRecord::Base
belongs_to :pub_indice
belongs_to :pub_liste_horizon
belongs_to :admin_utilisateur
has_many :hist_versions_paquets_mesures
end
我的app/model/hist_version_paquet_mesures.rb模型:
class HistVersionPaquetMesures < ActiveRecord::Base
belongs_to :hist_paquet_mesures
belongs_to :pub_modification
belongs_to :vers_origine, :class_name => 'HistOrigineModification', :foreign_key => 'hist_origine_modification_id'
# polymorphic association
has_one :comme_origine, :class_name => 'HistOrigineModification', as: :hist_origine
end
我的app/controllers/history/hist_paquets_mesures_controller.rb控制器:
class History::HistPaquetsMesuresController < ApplicationController
def show
@hist_paquet_mesures = HistPaquetMesures.find_by_id(params[:id])
respond_with(:history, @hist_paquet_mesures)
end
end
奇怪的是“s”在错误消息的“HistVersionsPaquetsMesure”中的位置:HistPaquetMesures::HistVersionsPaquetsMesure
不应该是 HistPaquetMesures::HistVersionPaquetMesures 吗?为什么我有这个结果?
欢迎任何帮助