我试图让AMF与Rails3一起使用。 我已经成功安装了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的说明中所述,我做了以下操作。 在我的production.rb在config / environment下我添加了行
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?
对我而言,似乎正在查看该方法的wron类。 哪里 NoMethodError(未定义的方法`构造?'用于#RocketAMF :: Envelope:0x39ba868):
必不可少的部分是 RocketAMF ::信封:0x39ba868 应该是 RocketAMF:ANOTHER_CLASS:信封:0x39ba868
我是对的,哪里出错了? 任何帮助将不胜感激!
克里斯