我有代码
def showTags(post)
tagString = ''
tagString += "Politics " if post.tags(:politics)
tagString += "Technology " if post.tags(:technology)
tagString += "Entertainment " if post.tags(:entertainment)
tagString += "Sports " if post.tags(:sports)
tagString += "Science " if post.tags(:science)
tagString += "Crime " if post.tags(:crime)
tagString += "Business " if post.tags(:business)
tagString += "Social " if post.tags(:social)
tagString += "Nature " if post.tags(:nature)
tagString += "Other " if post.tags(:other)
return tagString
end
我的代码模型有10个布尔值(政治,技术等等)和belongs_to :post
。当您发布新帖子时,会出现与每个字段对应的复选框。所以在发帖后有一些真实和一些错误的价值观。当我在post#index中调用此方法时,会出现问题,以显示属于此帖子的标签。问题是显示所有单词,我使用控制台和post.tags是正确的(一些是真的和一些错误的值)但是if post.tags(:politics)
(或其他)总是返回true。我尝试使用if post.tags.politics
,但这只是一个错误。
有人可以帮我解决这个问题吗。
答案 0 :(得分:1)
假设您的belongs_to :post
班级中有Tag
,has_many :tags
班级中有Post
,那么tags
属性就是一个列表,因此您需要进行迭代在它上面:
post.tags.each {|tag| puts tag.politics}
或索引:
post.tags[0].politics
从外观上看,这种类型的模型并没有太多意义。也许在has_one :tag
班级中Post
代替。然后你可以拨打post.tag.politics
。