質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

11808閲覧

HTMLにおけるtextareaの改行を保つ方法

witchy

総合スコア74

CGI

CGI(Common Gateway Interface)とは、Webサーバー上でユーザプログラム動作させる仕組みのこと。また、動かす前提のプログラムをCGIと呼ぶこともあります。HTMLなどの静的な情報に限らず、プログラムの処理結果をベースにした動的情報の提供が可能です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

2クリップ

投稿2019/01/09 17:47

前提・実現したいこと

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>スレッド&lt#{thread}&gt</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>スレッド&lt#{thread}&gt</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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

white-space: pre

もしくは

<pre>

投稿2019/01/10 00:25

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

witchy

2019/01/10 22:33

<pre>で出来ました! ご回答ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問