【发布时间】:2016-01-19 11:00:19
【问题描述】:
在我的 Rails 4 应用程序中,我有一个 Post 模型,其中 :copy 和 :short_copy 作为自定义属性(字符串)。
这些属性包含社交媒体(Facebook、Twitter、Instagram、Pinterest 等)的副本。
我在Posts#Show 视图中显示这些属性的内容。
目前,URL、#hashtags 和 @mentions 的格式与文本的其余部分相同。
我想做的是用不同的方式格式化它们,例如用另一种颜色或粗体。
我找到了twitter-text gem,它似乎提供了这样的功能,但我的问题是我不需要——也不希望——将这些 URL、#hashtags 和 @mentions 变成真正的链接。
事实上,twitter-text gem 似乎默认使用Twitter::Autolink 转换URL、#hashtags 和@mentions,如this Stack Overflow question 中所述。
这不是我想要的:我只是想更新我的 URL、#hashtags 和 @mentions 的样式。
如何在 Ruby/Rails 中做到这一点?
————
更新:
按照 Wes Foster 的回答,我在 post.rb 中实现了以下方法:
def highlight(string)
string.gsub!(/\S*#(\[[^\]]+\]|\S+)/, '<span class="highlight">\1</span>')
end
然后,我定义了以下 CSS 类:
.highlight {
color: #337ab7;
}
最后,我在所需的视图中实现了<%= highlight(post.copy) %>。
我现在收到以下错误:
ArgumentError
wrong number of arguments (1 for 2..3)
<td><%= highlight(post.copy) %></td>
我做错了什么?
————
【问题讨论】:
-
使用正则表达式并将它们包装在
<span class="hashtag">中。
标签: css ruby-on-rails regex ruby-on-rails-4 hashtag