我有這個輸入字段:<%= f.text_field :skills %>
,我想讓我的用戶列表達到5個技能(或單詞)。每個都以逗號分隔。用戶必須輸入在列表中以逗號分隔的技能
僅供參考,:技能目前只是我的用戶表中的一列。
我該如何做到這一點?我以某種方式想它首先需要將空格分隔爲單詞,對它們加以限制,然後用逗號將它們組合起來。
我有這個輸入字段:<%= f.text_field :skills %>
,我想讓我的用戶列表達到5個技能(或單詞)。每個都以逗號分隔。用戶必須輸入在列表中以逗號分隔的技能
僅供參考,:技能目前只是我的用戶表中的一列。
我該如何做到這一點?我以某種方式想它首先需要將空格分隔爲單詞,對它們加以限制,然後用逗號將它們組合起來。
要驗證它,在類中添加格式驗證測試怎麼辦?
class Test
validate :valid_skills_format?
def valid_skills_format?
if !(self.skills =~ /regex_for_5_words_separated_by_commas/)
self.errors.add(:skills, "wrong format")
end
end
end
你也可以用拆分(',')來測試並檢查你是否有5個結果。
如果我理解正確的問題,這樣的事情應該給你你想要的東西:
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)
,這將使您的技能達到逗號序列化的值。然後你的驗證員將解壓技能,檢查他們的尺寸,你很好去!
不知道問題是什麼;如果用戶必須用逗號分隔輸入它,那麼這就是你想要存儲的方式,這有什麼問題?你問如何驗證它? – 2012-01-15 23:28:39
是的,我想這個問題更多的是關於如何驗證它,並確保用戶以這種格式輸入它。 – 2012-01-16 00:27:57
儘管我認爲人們在下面回答您的問題,但我會敦促您重新考慮您的設計。讓某人輸入5個逗號劃定的技能是很好的,但如果您創建技能表並讓用戶擁有其中的許多技能,則您可以利用更好的內置軌道功能。 – 2012-01-16 17:01:14