gpt4 book ai didi

css - Rails 4 : how to identify and format links, 主题标签和模型属性中的提及?

转载 作者:行者123 更新时间:2023-11-28 09:46:01 24 4
gpt4 key购买 nike

在我的 Rails 4 应用程序中,我有一个 Post模型,带有 :copy:short_copy作为自定义属性(字符串)。

这些属性包含社交媒体(Facebook、Twitter、Instagram、Pinterest 等)的副本。

我在 Posts#Show 中显示这些属性的内容查看。

目前,URL、#hashtags 和@mentions 的格式与文本的其余部分一样。

我想做的是以不同的方式格式化它们,例如另一种颜色或粗体。

我找到了 twitter-text gem ,它似乎提供了这样的功能,但我的问题是我不需要——也不希望——将这些 URL、#hashtags 和@mentions 变成真正的链接。

事实上,twitter-text gem 似乎默认将 URL、#hashtags 和 @mentions 转换为 Twitter::Autolink。 ,如 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) %>在所需的 View 中。

我现在收到以下错误:

ArgumentError
wrong number of arguments (1 for 2..3)
<td><%= highlight(post.copy) %></td>

我做错了什么?

——————

最佳答案

我确信可以改进以下每个正则表达式模式以匹配更多选项,但是,以下代码对我有用:

def highlight_url(str)
str.gsub!(/(https?:\/\/[\S]+)/, '[\1]')
end

def highlight_hashtag(str)
str.gsub!(/\S*#(\[[^\]]+\]|\S+)/, '[#\1]')
end

def highlight_mention(str)
str.gsub!(/\B(\@[a-z0-9_-]+)/i, '[\1]')
end

# Initial string
str = "Myself and @doggirl bought a new car: http://carpictures.com #nomoremoney"

# Pass through each
highlight_mention(str)
highlight_hashtag(str)
highlight_url(str)

puts str # > Myself and [@doggirl] bought a new car: [http://carpictures.com] [#nomoremoney]

在这个例子中,我用方括号 [] 包裹了匹配项。您应该使用 span 标签并设置样式。此外,为了简单起见,您可以将所有三个 gsub! 包装到一个方法中。

针对提问者的附加错误问题进行了更新

看起来错误是引用了另一个名为 highlight 的方法。尝试将方法的名称从 highlight 更改为 new_highlight 以查看是否可以解决新问题。

关于css - Rails 4 : how to identify and format links, 主题标签和模型属性中的提及?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33242512/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com