rubyで一行掲示板

これまでのruby記事を通してBBS(掲示板)の作成が可能になったので、作成してみました。
ただ課題の方が多く、とりあえずという程度です。
参考記事
rubyでファイルを読み込む
rubyでフォームデータをファイルに書き込む
rubyでフォームデータを受け取る

掲示板のプログラミングの流れは
1)データを書き込む
2)データを読み込む
3)データをHTMLで表示する
だと思います。

まず1)ですが、以下の様に書いたHTMLで
<form method="POST">
一言:<input type="text" name="datapost">
<input type="submit" value="送信">
</form>

送信したデータを
1| FILENAME = "bbs_test.log"
2| log = []
3| post = input["datapost"]
4| if post
5| log.unshift(post + "<br>")
6| f = open(FILENAME, "a")
7| log.each{|line|
8| f.print line
9| }
10| f.close
11| end

とすることで、bbs_test.logに書き込むことができます。
2行目では配列logを初期化し、5行目のunshiftで配列の頭に新しいのを追加しています。
6行目は保存用のlogファイル(bbs_test.log)を書き込み属性で開き、logの各行を書き込んでいます。
2)のデータを読み込むでは
message = ""
f = open(FILENAME)
f.each{|line|
message += line
}
f.close

1)で書き込まれたlogファイルを読み取りmessageに代入しています。
3)の表示の仕方は、2)で代入されたmessageをHTML上で#{s}という風に式展開することで可能です。
rubyで一行掲示板サンプル
課題
・配列に代入されていない
・unshiftなのに末尾に代入されている
全コード
#!/usr/bin/ruby
print "Content-type: text/html?n?n"
require "cgi-lib"
input = CGI.new
FILENAME = "bbs_test.log"
log = []
message = ""
post = input["datapost"]
if post
log.unshift(post + "<br>") #配列logにpostデータを追加
f = open(FILENAME, "a") #logデータを書き込みで開く
log.each{|line|
f.print line
}
f.close
end
f = open(FILENAME)
f.each{|line|
message += line
}
f.close
print <<EOF
<html>
<head>
<title>rubyで一行掲示板</title>
</head>
<body>
<form method="POST">
一言:<input type="text" name="datapost">
<input type="submit" value="送信">
</form>
<hr>
#{message}
</body>
</html>
EOF

sponsors

「rubyで一行掲示板」をシェアする

記事作成:
記事URL:

TOP > > rubyで一行掲示板