イムは、この機能をevalにしようとruby TypeError - Fixnumの暗黙的な文字列への変換はありませんか?
このエラー
例外TypeError表示されます - 私は解決できる方法を文字列
eval("File.open('nagai.txt', 'a+') do |f| \n f. puts parts[" + params[:salutation].to_i + "] \n end")
にFixnumかの無い暗黙の型変換を
イムは、この機能をevalにしようとruby TypeError - Fixnumの暗黙的な文字列への変換はありませんか?
このエラー
例外TypeError表示されます - 私は解決できる方法を文字列
eval("File.open('nagai.txt', 'a+') do |f| \n f. puts parts[" + params[:salutation].to_i + "] \n end")
にFixnumかの無い暗黙の型変換を
このコードは、極めてです危険で、私は最初にこれを行う理由を見ることができません。 eval
を削除し、あなたは、この非常に一般的なコードを取得する:
File.open('nagai.txt', 'a+') do |f|
f.puts parts[params[:salutation]]
end
エラーがeval
、コードあなたを構築する過程でStringにFixnumか/整数を連結しようとしてから来ています。このコードは無効であり、同じエラーが得られます。
"1" + 1
Rubyはない、そのような任意の文字列とその逆に整数に変換するJavaScript、PHPやPerlなどの他の言語のようなものです。この2つの間には厳密な分離があり、変換には.to_s
や.to_i
などの指定が必要です。
固定バージョンは同等である必要があります。後でこれを延期する必要がある場合は、メソッドを書くことができます。
def write_nagai(params)
File.open('nagai.txt', 'a+') do |f|
f.puts parts[params[:salutation]]
end
end
このようにしないでください。あなたのコードは脆弱です。 –
は、私はそれを私は変数は 'のeval()' – zzero
を改善するために何ができます: 'params [:salutation]'は整数インデックスを期待する配列に渡される文字列インスタンスです。 – zzero