2

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

Rails inspect を使用した検査は次のとおりです。

"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

文字列に手を伸ばして「修正」することもできますが、組み込みコードに任せてみませんか?

確かに、この場合、誰かが新しい OS と新しい回線終端方式を採用する可能性は低いです。(とにかく、それはどれほど悪いことでしょうか?)

それでも、一般的な規則として、また実際には、システムに依存するものはすべてローカル ライブラリに処理させてください。どこでも実行できるようにコードを記述します。

于 2012-05-20T20:02:22.940 に答える