我正在尝试为我的Rails图像板提供绿色文本支持(尽管应该提到这是严格的Ruby问题,而不是Rails问题)
基本上,我的代码所做的是:我的代码如下所示:
def filter_comment(c) #use for both OP's and comments
c1 = c.content
str1 = '<p class = "unkfunc">' #open greentext
str2 = '</p>' #close greentext
if c1 != nil
arr_lines = c1.split('\n') #split the text into lines
arr_lines.each do |a|
if a[0] == ">"
a.insert(0, str1) #add the greentext tag
a << str2 #close the greentext tag
end
end
c1 = ""
arr_lines.each do |a|
strtmp = '\n'
if arr_lines.index(a) == (arr_lines.size - 1) #recombine the lines into text
strtmp = ""
end
c1 += a + strtmp
end
c2 = c1.gsub("\n", '<br/>').html_safe
end
但由于某种原因,它不起作用!我有很奇怪的事情,greentexting只适用于第一行,如果你在第一行有greentext,普通文本在第二行不起作用!
答案 0 :(得分:1)
旁注,可能是你的问题,没有太深入......
尝试使用join()
重新加入数组c1 = arr_lines.join('\n')
答案 1 :(得分:0)
我怀疑你的问题是你的CSS(或者HTML),而不是Ruby。生成的HTML看起来是否正确?
答案 2 :(得分:0)
我认为问题在于拆分数组中的行。
names = "Alice \n Bob \n Eve"
names_a = names.split('\n')
=> ["Alice \n Bob \n Eve"]
请注意,遇到\ n时,字符串未被分割。
现在让我们试试这个
names = "Alice \n Bob \n Eve"
names_a = names.split(/\n/)
=> ["Alice ", " Bob ", " Eve"]
双引号中的或“\ n”。 (感谢Eric的评论)
names = "Alice \n Bob \n Eve"
names_a = names.split("\n")
=> ["Alice ", " Bob ", " Eve"]
这在数组中分裂了。现在您可以检查并附加您想要的数据
可能这就是你想要的。
def filter_comment(c) #use for both OP's and comments
c1 = c.content
str1 = '<p class = "unkfunc">' #open greentext
str2 = '</p>' #close greentext
if c1 != nil
arr_lines = c1.split(/\n/) #split the text into lines
arr_lines.each do |a|
if a[0] == ">"
a.insert(0, str1) #add the greentext tag
# Use a.insert id you want the existing ">" appended to it <p class = "unkfunc">>
# Or else just assign a[0] = str1
a << str2 #close the greentext tag
end
end
c1 = arr_lines.join('<br/>')
c2 = c1.html_safe
end
希望这会有所帮助.. !!