【发布时间】:2014-03-05 14:06:08
【问题描述】:
好的,我正在创建一个 gem,它应该在用户的帖子中找到标签 #、@ 或 $。我正在使用 case when 语句,它似乎只在某些时候有效。例如,我将有一个类似@you 的字符串,它可以工作,但除非我添加#cool @you,否则#cool 不起作用。似乎其他when 语句仅在第一个when 语句为真时才有效。正则表达式就是这样,它知道要查找什么,而且我知道那些确实有效。
REGEXS = [Supertag::Tag::USERTAG_REGEX, Supertag::Tag::HASHTAG_REGEX, Supertag::Tag::MONEYTAG_REGEX]
def linkify_tags(taggable_content)
text = taggable_content.to_s
REGEXS.each do
case text
when text = text.gsub(Supertag::Tag::USERTAG_REGEX) {link_to($&, usertag_path($2), class: 'tag')}
when text = text.gsub(Supertag::Tag::HASHTAG_REGEX) {link_to($&, hashtag_path($2), class: 'tag')}
when text = text.gsub(Supertag::Tag::MONEYTAG_REGEX) {link_to($&, moneytag_path($2), class: 'tag')}
end
end
text.html_safe
end
【问题讨论】:
-
老实说,不知道为什么这会受到如此多的反对......
-
我也不明白为什么会这样。这个网站的意义不在于帮助人们吗?
标签: ruby-on-rails ruby