2012-01-15 2 views
0

私はこの入力フィールドを持っています:<%= f.text_field :skills %>と私は最大5つのスキル(または単語)をユーザーリストに入れたいと思います。それぞれはコンマで区切られています。ユーザーはリスト内のカンマで区切られたスキルを入力する必要があります

FYI、:スキルは現在、私のUsersテーブルの1つの列です。

これはどのようにして達成できますか?私は何とか最初にスペースを単語として区切り、それに制限をつけてからカンマで区切る必要があると考えています。

+0

質問は何ですか。ユーザーがコンマで区切って入力しなければならない場合は、それを保存する方法ですが、問題は何ですか?あなたはそれを検証する方法を尋ねていますか? –

+0

はい、私はそれを検証し、ユーザーがその形式でそれを入力していることを確認する方法についての質問があると思います。 –

+0

私は人々があなたの質問に答えてくれたと思うが、私はあなたのデザインを考え直すよう促すだろう。誰かにカンマ区切りの5つのスキルを入力させても構いませんが、スキルテーブルを作成してユーザーにそれらの多くを持たせると、より優れたレール機能を活用することができます。 –

答えて

0

これを検証するには、クラスでフォーマット検証テストを追加することはどうですか?

スプリット( '、')でテストし、5つの結果があるかどうかを確認することもできます。

0

私が正しく質問を理解していれば、このようなものは何をしたいあなたを与える必要があります。

class User < ActiveRecord::Base 
    attr_accessor :raw_skills 
    validate :five_or_fewer_skills? 


    def five_or_fewer_skills? 
    if unpacked_skills.size > 5 
     self.errors.add(:skills, "Too many skills!") 
    end 
    end 

    def unpacked_skills 
    skills.split(',') 
    end 

    def pack_skills(raw) 
    skills = raw.join(',') 
    end 
end 

その後、フォームを作成し、「raw_skills」フィールドに自分の「スキル」フィールドを変更し、中に作成プロセスはpack_skills(raw_skills)と表示され、スキルはカンマでシリアライズされた値に設定されます。次に、あなたのバリデーターはスキルを解き、サイズをチェックし、あなたは行くことができます!

関連する問題