その他
    ホーム 技術発信 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連携のほうが便利ですが、解析データ送信したり、クライアントで処理するには重い計算を一度サーバーで行ってからレスポンスだけを返す場合等に有効かと思います。