gpt4 book ai didi

ruby-on-rails - ruby /rails : How can I replace a string with data from an array of objects?

转载 作者:数据小太阳 更新时间:2023-10-29 07:47:09 26 4
gpt4 key购买 nike

我在这里处理了两位数据。

一个“问题”:This is an [example] string for [testing] and [what not].

然后我的数据库中有一组对象(称为“答案”):

[#<Answer id: 137, question_id: 207, text: "example">, #<Answer id: 138, question_id: 207, text: "testing">, #<Answer id: 139, question_id: 207, text: "what not"]

我需要做的是用包含相应对象数据的链接替换问题 ( [example]) 中括号内的文本。

所以 [example]可能变成 <a href="#" data-answer="137" data-question="207">example</a> .

我该怎么做?

最佳答案

假设您已经有了答案:

str = "This is an [example] string for [testing] and [what not]."
answers.each{|o| str.gsub!("[#{o.name}]", "<a href=\"#\" data-answer=\"#{o.id}\" data-question=\"#{o.question_id}\">#{o.name}</a>")}

如果您没有答案:

str = "This is an [example] string for [testing] and [what not]."
m = str.scan(/\[([^\]]*)\]/).map{|s|s[0]}
Answer.where(:text => m).each{|o| str.gsub!("[#{o.name}]", "<a href=\"#\" data-answer=\"#{o.id}\" data-question=\"#{o.question_id}\">#{o.name}</a>")}

这通过使用正则表达式搜索 [] 括号之间的所有文本来工作,然后返回一个数组给 m。该数组由 ["example"、"testing"、"what not"] 组成。

然后将该数组传递给 where() 调用,它在内部让 SQL 使用 IN 表达式,例如 WHERE text IN ('example','testing', 'what not')

运行此命令后,str 现在已更改为您想要的结果。

关于ruby-on-rails - ruby /rails : How can I replace a string with data from an array of objects?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5480942/

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