以下Ruby代码会导致额外的行被写入,我试图找出导致这种情况的原因。
我的Ruby代码:
File.delete(RAILS_ROOT + '/app/views/filer/' + @navn + ".html.erb")
filen = File.open(RAILS_ROOT + '/app/views/filer/' + @app.slug + ".html.erb", "a+")
filen.write("#{params[:app][:cod]}")
我检查过这些参数:
Content-Disposition: form-data; name="app[cod]" <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da"> <head> <title>Ruby on Rails: Welcome aboard</title> <%= javascript_include_tag 'jquery' %>
但是当创建文件时,会添加新行:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head> <title>Ruby on Rails: Welcome aboard</title>
<%= javascript_include_tag 'jquery' %>
应该是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="da">
<head> <title>Ruby on Rails: Welcome aboard</title>
<%= javascript_include_tag 'jquery' %>
这是铁路检查的一个问题:
"cod"=>"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"DTD/xhtml1-strict.dtd\">\r\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"da\">\r\n<head>
答案 0 :(得分:0)
我使用gsub方法去除新行:
filen.puts("#{params[:app][:cod].gsub("\n", "")}")
答案 1 :(得分:0)
在Posix风格的块写入中处理嵌入式行终止符似乎只是在寻找麻烦。为什么不做一些随处可用的东西,比如......
puts "how\r\nnow\r\nbrown\r\ncow".split
虽然到达字符串以“修复”它们也会起作用,为什么不让内置代码为你做呢?
当然,在这种情况下, 不太可能有人会带来新的操作系统和新的行终止方案。 (无论如何, 会有多邪恶?)
但是,作为一般规则和实践:让本地图书馆处理任何依赖于系统的东西。编写代码以便在任何地方运行。