2011-07-14 96 views
0

的值具有代碼我如何訪問相關的模型

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。當您創建新帖子時,會出現與每個字段對應的複選框。所以在發佈帖子之後,會有一些trues和一些錯誤的值。當我在post#index中調用這個方法時,問題就出現了,爲了顯示哪些標籤屬於這個帖子。問題是,所有的單詞顯示,我用控制檯和post.tags是正確的(一些真實的和一些錯誤的值),但if post.tags(:politics)(或其他)總是返回true。我嘗試使用if post.tags.politics但這只是一個錯誤。

有人可以幫助我這個。

回答

1

假設你有你的Tagbelongs_to :posthas_many :tagsPost類則tags屬性列表,讓你無論是需要遍歷它:

post.tags.each {|tag| puts tag.politics} 

或索引到其中:

post.tags[0].politics 

從外觀來看,這種類型的模型並沒有多大意義。也許可以在Post類中使用has_one :tag。然後你可以撥打post.tag.politics

+0

嗯,我得到這個錯誤**不能將符號轉換爲整數**當我將它們切換到方括號 – Vasseurth

+1

我更新了答案,但我不得不做出假設,因爲您的模型不清楚。 –

+0

謝謝,但我認爲使用gem act-as-taggable-on是要走的路。或者可能只是將所有布爾值放入posts表中而不是使用單獨的表 – Vasseurth

相關問題