在我的 Rails 4 应用程序中,我有一个Post
模型,与:copy
and :short_copy
作为自定义属性(字符串)。
这些属性包含社交媒体(Facebook、Twitter、Instagram、Pinterest 等)的副本。
我在我的中显示这些属性的内容Posts#Show
view.
目前,URL、#hashtags 和 @mentions 的格式与文本的其余部分相同。
我想做的是以不同的方式格式化它们,例如用另一种颜色或粗体。
我找到了推特文本宝石 https://github.com/twitter/twitter-text/tree/master/rb,它似乎提供了这样的功能,但我的问题是我不需要并且不想让这些 URL、#hashtags 和 @mentions 变成真正的链接。
事实上,twitter-text gem 看起来默认会转换 URL、#hashtags 和 @mentionsTwitter::Autolink
,如中所解释的这个堆栈溢出问题 https://stackoverflow.com/questions/12547496/ruby-on-rails-converting-twitter-mentions-hashtags-and-urls-within-a-string.
这不是我想要的:我只想更新我的 URL、#hashtags 和 @mentions 的样式。
我怎样才能在 Ruby/Rails 中做到这一点?
—————
UPDATE:
根据韦斯福斯特的回答,我实现了以下方法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>
我究竟做错了什么?
—————