这在 Rails 4.0.0 中有效,自从上周升级后现在什么也没有显示。
这是 HAML posts/_post.haml
=post.id
=post.tags
=post.tags.length
=render post.tags
输出,render
什么都不显示!
113 #<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Tag:0x12388c08> 0
这显示了 post.tags.length
为 0。但是,帖子确实有标签!他们都这样做!
irb(main):168:0> p.id
=> 113
irb(main):169:0> p.tags.length
=> 2
那么为什么 View 中没有局部渲染?我在渲染的部分中有其他部分。
当我去 post/show.haml
,它会很好地显示标签。
=@post.tags
=@post.tags.length
=render @post.tags
#<ActiveRecord::Associations::CollectionProxy::ActiveRecord_Associations_CollectionProxy_Tag:0xc24f9c0> 2 FINANCE BUSINESS
不确定这是否重要,这是此关系与其他关系唯一不同的地方。这是 post
模型。
has_many :taggings, :dependent => :destroy
has_many :tags, :through => :taggings
=post.tags.length
返回 0
,这意味着没有与给定帖子关联的标签。
我建议在您的 posts/_post.haml
中添加以下行
= post.id
运行你的代码应该给你当前帖子的id
。然后运行 rails dbconsole
来验证给定的帖子 ID 是否有任何关联的标签。
我是一名优秀的程序员,十分优秀!