rubyで一行掲示板に関するコメントはまだありません。
ご遠慮なくコメントしてください。
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
2007年07月10日
前の記事:Fisheyeを実現するjavascriptライブラリ「dojo」
次の記事:Google Mapライクな年表を作成するjavascriptAPI「Timeline」
関連記事
- rubyで配列を扱う
- rubyでファイルを読み込む
- rubyでフォームデータをファイルに書き込む
- rubyでフォームデータを受け取る
- ビジュアル面で最高のタイムピッカーJavaScript「nogray_time_picker」
コメント投稿
この記事へのトラックバック:
- Webカラーに関するサイト21
- 英字新聞ぽいコラムをJavaScriptライブラリ「jQuery」で作る「Columnizer」
- 心地よく要素を切り替えるJavaScript「jFlip」
- CoverFlowを実現するJavaScript「JS Coverflow」
- 画像を丸く輝かせるJavaScript「sphere.js」
- セクシーなLightBoxを実現するJavaScript「Sexy LightBox」
- JavaScriptライブラリ「jQuery」を使ってカレンダーを作る「jCal.js」
- カバーフローぽい画像ギャラリーJavaScript「ProtoFlow」
- レイヤー表示(?)JavaScript「jParallax」
- スクロールしてもついてくる!のJavaScript「jQuery Scroll Follow」