ホーム DoRuby Flash(ActionScript)でLoadVars.sendAndLoadを使ってRuby on Railsと連携しよう

Flash(ActionScript)でLoadVars.sendAndLoadを使ってRuby on Railsと連携しよう

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

ご無沙汰しております。エンジニアの はる です。

前回は「Ruby on RailsとFlash(ActionScript)のXML連携」について、記事を掲載させていただきましたが、今回は、Ruby on RailsとFlash(ActionScript)の”LoadVars.sendAndLoadメソッド”を使用した連携について書いてみたいと思います。

Rails側とFlash側の作業は、

	[Rails]テキスト形式の結果を返す。
[Flash]loadVars.sendAndLoadメソッドを使用して、データの送信・受信を行う。

	

となります。

[Flash(ActionScript)]

#onClick時、Railsアプリに「test=1」「test=2」「test=3」を送信。

#Rails側で処理を行った後、result_lvでレスポンスを受け取ります。

	on(release){
  var send_lv = new LoadVars();
  var result_lv = new LoadVars();
  send_lv.sendAndLoad('http://localhost/test/reply?test1=1&test2=2&test3=3',result_lv,"POST");
  result_lv.onLoad = function(success:Boolean) {
    if (success) {
      trace("success");
      _root.test1.text=result_lv.test1;
      _root.test2.text=result_lv.test2;
      _root.test3.text=result_lv.test3;
    } else {
	  trace("error");
    }
  }
}

	

[Rails]

#パラメータを受け取り、処理を行った後、レスポンスを返します。

	def reply
  array = ["one","two","three"]
  response.headers["Content-Type"] = 'text/plain; charset=UTF-8'
  render :text => "&test1=#{array[params[:test1].to_i]}&test2=#{array[params[:test2].to_i]}&test3=#{array[params[:test3].to_i]}"
end

#viewで返り値を管理したい場合は、以下のように記述します。
def reply2
  @array = ["one","two","three"]
  response.headers["Content-Type"] = 'text/plain; charset=UTF-8'
  render(:text => render_to_string(:partial => 'reply').strip)
end

	

#_reply.rhtml

	&test1=<%=@array[params[:test1].to_i]%>&test2=<%=@array[params[:test2].to_i]%>&test3=<%=@array[params[:test3].to_i]%>

	

#結果

	_root.test1.text => "one"
_root.test1.text => "two"
_root.test1.text => "three"

	

以上のように、LoadVars.sendAndLoadメソッドを使用することで、前回ご紹介したXML連携よりもだいぶスマートに連携することができます。

大量のデータを読込む場合は、XML連携のほうが便利ですが、解析データ送信したり、クライアントで処理するには重い計算を一度サーバーで行ってからレスポンスだけを返す場合等に有効かと思います。

記事を共有

最近人気な記事