我有表 contacts,tags,对应关系是多对多,我按照约定,中间表为 contacts_tag,我在 model 中已经建好了关系 as_and_belongs_to_many:contacts/has_and_belongs_to_many:tags 但是我在 contact 的 view 中怎么取不到 tag 的数据, =contact.tags.name 在页面上显示的数据是这个 ActsAsTaggableOn::Tag,怎么回事啊这是
这个就表示没有和该 contact 关联的 tag,在 rails console
再确定下结果。如果还是空,就检查你的数据吧,可能是外键的值不正确。
#7 楼 @reyesyang 我试了也不行,如果我改成 contact.tags.name 的话页面显示的居然是 ActsAsTaggableOn::Tag 这个,怎么会显示成了 Tag 所继承的那个类了啊?是不是 Tag 类所继承的那个地方有问题啊?
#11 楼 @hicupp 报错 NoMethodError: undefined method `contacts_tags' for #Contact:0x4bd3c68
class Contact < ActiveRecord::Base
has_many :contacts_tags
has_many :groups, :through => :contacts_tags
end
class ContactsTag < ActiveRecord::Base
belongs_to :contact
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :contacts_tags
has_many :contacts, :through => :contacts_tags
end
用这样的方式试试,不推荐 has_and_belongs_to_many