2011-07-14 11 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を持っています。新しい投稿を作成すると、各フィールドに対応するチェックボックスが表示されます。投稿をした後、いくつかの真実といくつかの偽りの価値があります。問題は、どのタグがこの投稿に属しているかを表示するために、このメソッドをpost#indexで呼び出すときに発生します。問題は、すべての単語が表示されていることです。私はコンソールで再生し、post.tagsは正しいです(いくつかの真といくつかの偽の値)が、常にif post.tags(:politics)(または何でも)は常にtrueを返します。私はif post.tags.politicsを使ってみましたが、それはちょうどエラーを与えました。

誰か助けてもらえますか?

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

またはインデックスそれに:あなたはそれを反復処理する必要がありますいずれかのように、あなたはあなたのPostクラスであなたのTagクラスでbelongs_to :posthas_many :tagsを持っていると仮定すると

答えて

1

はその後tags属性がリストされ

post.tags[0].politics 

外から見ると、このタイプのモデルではあまり意味がありません。代わりに、Postクラスのhas_one :tagを実行してください。その後、post.tag.politicsに電話することができます。

+0

ええと、このエラーが発生します** Symbolを整数に変換できません**大括弧に切り替えると – Vasseurth

+1

私は答えを更新しましたが、あなたのモデルがはっきりしていないために仮定しなければなりませんでした。 –

+0

ありがとうございます、しかし、私は宝石を使用してtaggableとして行動すると思っています。または、別のテーブルを使用する代わりに、ブール値のすべてをポストテーブルに入れるだけでも構いません – Vasseurth

関連する問題