2

Rails3でAMFを動作させようとしています。rails3-amf-0.1.0 gem と RocketAMF-0.2.1 gem を正常にインストールしました。

私のアプリには、次のコードを持つコントローラーがあります。

def getRandomCards
  @incoming = params[0]
  @cards = Cardvo.first
  respond_with(@cards) do |format|
      format.amf { render :amf => @cards.to_amf}  
  end
end

Actionscript からの呼び出しを通じて、amf 形式でデータを返したいと考えています。

さらに、rails3-amf の手順で述べたように、次のことを行いました。config/environment の下の私の production.rb で、次の行を追加しました

config.rails3amf.map_params :controller => 'CardvosController', :action => 'getRandomCards'

私のamfゲートウェイが得た

config.rails3amf.gateway_path = "/gateway"

問題は:

Actionscript / Flash から呼び出しを行うと、次のメッセージが表示されます (ログから取得)。

Started POST "/gateway" for 192.178.168.1 at Fri Nov 19 15:13:28 +0100 2010
  Processing by CardvosController#getRandomCards as AMF
  Parameters: {0=>100.0}
  [1m[36mSQL (0.4ms)[0m  [1mSHOW TABLES[0m
  [1m[35mCardvo Load (0.2ms)[0m  SELECT `cardvos`.* FROM `cardvos` LIMIT 1
Completed 200 OK in 13ms (Views: 0.9ms | ActiveRecord: 0.5ms)

NoMethodError (undefined method `constructed?' for #<RocketAMF::Envelope:0x39ba868>):

Amf ファイルは作成されますが、RocketAMF の remoting.rb にあるメソッドが見つかりませんでした。Rails3AMF から request_parser.rb でエラーがスローされ、構築を求めていると思いますか?

  # Wrap request and response
  env['rack.input'].rewind
  env['rails3amf.request'] = RocketAMF::Envelope.new.populate_from_stream(env['rack.input'].read)
  env['rails3amf.response'] = RocketAMF::Envelope.new

  # Pass up the chain to the request processor, or whatever is layered in between
  result = @app.call(env)

  # Calculate length and return response
  if env['rails3amf.response'].constructed?

私にとっては、メソッドの間違ったクラスを見ているようです。NoMethodError (#RocketAMF::Envelope:0x39ba868 の未定義のメソッド「構築された?」):

重要な部分は RocketAMF::Envelope:0x39ba868 であり、これは RocketAMF:ANOTHER_CLASS:Envelope:0x39ba868 である必要があります

私は正しいですか、一体どこにエラーがありますか? どんな助けでも大歓迎です!

クリス

4

0 に答える 0