将所有内容更改为正常的空格Ruby

时间:2018-01-09 18:32:53

标签: ruby-on-rails ruby utf-8 console

如何从Rails控制台将所有  gsub到普通空格?我有一个名为“课程”的模型,并且希望将具有 的每个课程替换为使用正常空白而不是不间断空格的课程。

到目前为止,我已经在控制台中尝试了这些:

courses = Course.all
courses.each { |course| course.gsub!(/\302\240/," ")}

courses = Course.all
courses.each {|course| course.shortname.gsub!(/ /i," ")}

重新启动我的rails服务器后,似乎仍然没有发生更改。我忽略了一个简单的错误。看起来这些变化要么首先不起作用,要么就是没有保存。

2 个答案:

答案 0 :(得分:1)

是的,您的更改不起作用,因为您使用了错误的模式,您应该在特殊字符之前添加“\”,在您的情况下是“&”。

所以试试这个:

courses = Course.all
courses.each {|course| course.shortname.gsub!(/\ /," ")}

&nbspASCII code 160相同,所以

courses = Course.all
courses.each {|course| course.shortname.gsub!(160.chr("UTF-8")," ")}

同时尝试时我注意到& nbsp与“\ u00A0”相同,因为我收到错误,因为“\ u00A0”:字符串的未定义方法`html'。我不知道它是什么,但这可能也有效,

courses = Course.all
courses.each {|course| course.shortname.gsub!("/\u00a0/", "")}

答案 1 :(得分:0)

你没有保存课程。尝试:

Course.all.each do |course|
  course.shortname.gsub!(/ /i," ")
  course.save!
end