对于每篇文章,都有一个当前突出显示的关键字列表(包含在带有类的范围内)。但是,我需要允许关键字中的某些介词(“at”,“in”,“on”)。每篇文章都属于一个Order,其中包含逗号分隔的字符串。
例如,如果我有一个长尾关键词,如“精品酒店伦敦”,文章中包含“ 伦敦精品酒店”的字样,我需要将其作为关键字突出显示。
class Article < ActiveRecord::Base
def format_content
words = self.content
# map comma separated keywords into array and remove any whitespace
keywords = self.order.keywords.downcase.split(',').map{ |k| k.strip }
# replace words with keywords wrapped in span
keywords.each do |word|
words = words.gsub(/(#{word})/i, "<span class=\"text-primary\">\\1</span>")
end
words
end
end
在创建文章后,format_content方法在show视图的部分中使用,如下所示:
<%= simple_format article.format_content, { class: "content" }, wrapper_tag: "p" %>
答案 0 :(得分:0)
只需创建一个连接介词的关键字列表就足够了吗?
keywords_with_prepositions = prepositions.flat_map do |preposition|
keywords.map do |keyword|
[keyword, "#{keyword} #{preposition}", "#{preposition} #{keyword}", "something other in combinatation with your #{keyword}"]
end
end
我的建议是将其移出模型并进入装饰者或助手。此外,方法中的require
也应该移动一些级别。