2

以下 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' %>

这是对 rails 检查的检查:

"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> 
4

2 回答 2

0

我使用 gsub 方法去掉了新行:

filen.puts("#{params[:app][:cod].gsub("\n", "")}")
于 2012-05-20T20:02:12.107 回答
0

在 Posix 样式的块写入中处理嵌入式行终止符似乎只是自找麻烦。为什么不做一些始终可以使用的便携的东西,比如......

puts "how\r\nnow\r\nbrown\r\ncow".split

虽然进入字符串“修复”它们也可以,但为什么不让内置代码为你做呢?

当然,在这种情况下,不太可能有人会推出新的操作系统和新的线路终止方案。(无论如何,那会有多邪恶?)

但是,作为一般规则和实践:让本地图书馆处理任何与系统相关的事情。编写代码以在任何地方运行。

于 2012-05-20T20:02:22.940 回答