Railsのscaffoldでさくっと作ったインタフェースって、HTTP-POSTからSQLに保存したり取り出したりもできて色々プロトタイプを作るのに便利なのでまとめておく。
ためたデータの管理もできるし。
■Rails側の準備
まずrailsを入れる。
Macの人は既に入っているはず。Windowsなら、ActiveScriptRubyを入れてパス通すと、gemコマンドが入るのでgem install railsすればrailsコマンドが使えるようになる。DBはSQLiteのdll版をc:\windows\system32に入れればできる様になるはず。
railsでtestbbsというプロジェクトを作って、そこにscaffoldでentry(投稿)というmodelを作る。entryには、name(投稿者)とmessage(本文)が入る。
rails testbbs
cd testbbs
ruby script/generate scaffold entry name:string message:text
rake db:migrate
(単数形に注意)
webサーバーを立ち上げる
ruby script/server
http://localhost:3000/entriesから見れるようになっている。はず。(複数形に注意)
こんなページができている。ここからentryを増やしたり消したりもできる。
ここまでで、http://localhost:3000/entries/newから投稿できるのと、http://localhost:3000/entries.xmlから一覧を取得できるようになった。
→Source Code (Ruby on Rails 2.0.2)
■Flashから投稿する
HTTP POSTで行う。
今回作ったもの(動きます)
Source Code (AS3 / Flash CS3 + Flashdevelop)
今回もFlashDevelop上でAS3書いて、FlashCS3オーサリング/コンパイルした。
こいつでPOSTすると、http://localhost:3000/entriesに結果が出るようになる。
どうやってるかというとまず
http://localhost:3000/entries/newを見ると
Name
Message
という風にPOSTしているので、entry[name]とentry[message]をパラメータで渡せばいいとわかる。
AS3でhttp postする
varparams:URLVariables=newURLVariables();
params.decode(“entry[name]=”+_textInputName.text);
params.decode(“entry[message]=”+_textAreaPost.text);varrequest:URLRequest=newURLRequest(“http://localhost:3000/entries”);
request.method=URLRequestMethod.POST;
request.data=params;
varurlLoader:URLLoader=newURLLoader();
urlLoader.dataFormat=URLLoaderDataFormat.VARIABLES;urlLoader.load(request);
(Railsの複数形・単数形の変化は注意)
。
返り値を受け取るには、
関数を宣言して
publicfunctiononPostComplete(e:Event):void{
varparams:URLVariables=newURLVariables(e.target.data);
trace(“received:”+unescape(params.toString()));
}
関数をURLLoaderのインスタンスに登録しておけばいい
urlLoader.addEventListener(Event.COMPLETE,onPostComplete);//post完了イベントに関数登録
今回帰ってきた値。HTMLだ。
postfromflash
received:
“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
Entries:show
Entrywassuccessfullycreated.
Name:
shokai
Message:
postfromflash
Edit|
Back