前提・実現したいこと
textareaに入力した文章の改行を保ったまま、出力したいです。
発生している問題
改行しようと hello world とtextareaに入力したところ、hello worldと出力されました。
該当のソースコード
ruby
1#!/usr/bin/env ruby 2# encoding: utf-8 3require 'cgi' 4require 'sqlite3' 5 6cgi = CGI.new; 7print cgi.header("charset=utf-8"); 8 9thread=cgi["thread"] 10data=cgi["name"] 11name=CGI.escapeHTML(data) 12data2=cgi["msg"] 13msg=CGI.escapeHTML(data2) 14 15names = [] 16messages = [] 17db=SQLite3::Database.new("sample.db") 18db.transaction do 19 if(name != "" && msg != "") 20 db.execute('INSERT INTO content VALUES(?,?,?);',name,msg,thread) 21 end 22 db.execute('select name from content where thread = ?;',thread) do |key| 23 names.push(key[0]) 24 end 25 db.execute('select message from content where thread = ?;',thread) do |key| 26 messages.push(key[0]) 27 end 28end 29db.close 30 31print <<EOF 32<!DOCTYPE html> 33<html lang="ja"> 34<head> 35<meta charset="UTF-8"> 36<link rel="stylesheet" type="text/css" href="index.css"> 37<meta http-equiv="X-UA-Compatible" content="ie=edge"> 38<title>スレッド<#{thread}></title> 39<script type="text/javascript"> 40function pre_check(){ 41 name = document.getElementById("name").value; 42 msg = document.getElementById("msg").value; 43 ret=true; 44 if(!(name.length > 0)){ 45 document.js.name.value="名無しさん"; 46 } 47 if(!(msg.length > 0)){ 48 alert('空のコメントは送信できません。'); 49 ret = false; 50 return ret; 51 } 52 document.js.name.value=name; 53 document.js.msg.value=msg; 54 return ret; 55} 56</script> 57</head> 58 59<body> 60<h1>スレッド<#{thread}></h1> 61<h2>コメントを投稿</h2> 62<div> 63<form name="js" action="thread.rb" onsubmit="return pre_check()" method="POST"> 64<p>名前: <input type="name" id="name" name="name" value="名無しさん"></p> 65<p>コメント:<br> 66<textarea id="msg" name="msg" rows="6" cols="60"></textarea></p> 67<input type="hidden" name="thread" value="#{thread}"> 68<p><input type="submit" value="送信"><input type="reset" value="クリア"></p> 69</form> 70</div> 71<a href="toppage.rb">トップページに戻る</a> 72<hr> 73EOF 74 75for i in 0..names.size-1 76print <<EOF #HTML記述開始 77<p>#{i} 名前: #{names[i]}</p> 78<p>#{messages[i]}</p> 79EOF 80end 81 82print <<EOF 83</body> 84</html> 85EOF 86
試したこと
str = str.replace(/\r\n|\r|\n/g, '<br>');
str = str.replace('<br>', '\n');
などのことをreplaceメソッドを使用し試しましたが、改行することは出来ませんでした。
補足情報(FW/ツールのバージョンなど)
DBMSはsqlite3を使用し、テーブルの定義は以下のようにしました。
sqlite> .schema content CREATE TABLE IF NOT EXISTS "content"( name TEXT, message TEXT, thread TEXT); sqlite>

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/10 22:33