Segue abaixo dicas para você seguir e evitar o acontecimento de falhas na comunicação da sua aplicação flex com sua aplicação rails:

1) Inserir seu projeto flex dentro da pasta PUBLIC do seu projeto rails;
2) Importe novamente seu projeto flex do novo local e altere o Build Path (botão direito do mouse em cima do projeto), do seu projeto flex para o novo local, atentando-se para o número da porta de saida do servidor rails, exemplo: http://localhost:3000/nomedapastadoseuprojetoflex/bin-debug;
3) Para ficar mais claro e garantir maior controle seu na comunicação com o rails via HTTPService, primeiro certifique-se que esteja usando o componente HTTPService mxml, pois caso não saiba, no flex possui 2 tipos de componentes e sempre devemos usar o mxml, veja sua biblioteca que deve importar: import mx.rpc.http.mxml.HTTPService.
Tendo conferido que a classe que você esta usando é a mxml, crie seu componente HTTPService dinamicamente, direto no seu código actionscript, como no exemplo abaixo, veja como é simples:

Esta funcão envia pro rails um objeto chamado obj, que é montado pela função montaobjeto():

[Bindable] private var httpRails:HTTPService = new HTTPService(); private function cadastra():void{ httpRails = new HTTPService(); httpRails.url = “/atendimentos/cadastro”; httpRails.method = “POST”; httpRails.useProxy = false; httpRails.showBusyCursor = true; httpRails.resultFormat = “e4x”; httpRails.addEventListener(ResultEvent.RESULT, msgResult); httpRails.addEventListener(FaultEvent.FAULT, msgFault); montaobjeto(); httpRails.send(obj); } private var obj:Object = new Object(); private function montaobjeto():void{ obj = new Object(); try { if(_dgConsulta.selectedItem != null){ obj["id"] = _dgConsulta.selectedItem.id; } }catch (e:Error){ } obj["pacote[idcli]“] = _tIdcli.text; obj["pacote[nomecli]“] = _tNomecli.text; obj["pacote[nomeuser]“] = ModelLocator.usuario; obj["pacote[agendaapres]“] = _cbagendaApres.selectedItem.data; obj["pacote[dataapres]“] = _dfdataApres.text; obj["pacote[status]“] = _cbStatus.selectedItem.data; obj["pacote[historico]“] = _tHistorico.text; }

Na parte do flex é só isso que precisa se certificar, posteriormente basta colocar no resultevent do seu componente httpservice, aqui neste exemplo chamado de msgResult para a sua datagrid receber a resposta do rails, veja como é simples:

private function msgResult(obj:ResultEvent):void{ _minhadataGrid.dataProvider = obj.result.atendimentos.atendimento; }

4) Na parte do rails é mais simples ainda, sua action deverá receber os parametros enviados como acima demonstrado, ele deve ficar assim:

def cadastro @clientes = Cliente.create(params[:pacote]) if (@clientes.save) render :text => “ok” elsif render :x ml => @clientes.errors.to_xml_full end end