2011-02-02 3 views
1

Как контролировать, какие параметры передаются в методе RemoteObject? Я заметил, что когда я непосредственно скачать и запустить код из this site, сохранении результатов объекта в следующем параметре набор передается обратно:Управление параметрами, переданными в rubyamf (rails + flex)

Processing PostsController#save (for 127.0.0.1 at 2011-02-01 23:34:55) [POST] 
Parameters: {0=>{"post"=>#<Post id: nil, title: "a", body: "b", created_at: nil, updated_at: nil>}, "post"=>#<Post id: nil, title: "a", body: "b", created_at: nil, updated_at: nil>} 

тогда как мой собственный проект (который в основном участвуют следующие те же шаги, что и в этом руководстве) делает экономит, которые дают следы, как

Processing CarsController#save (for 127.0.0.1 at 2011-02-01 22:34:56) [POST] 
Parameters: {0=>{"car"=>#<Car id: nil, user_id: 0, name: "asdfCar", body_id: 3, theme: nil, deleted: nil, photo_file_name: nil, photo_content_type: nil, photo_file_size: nil, photo_updated_at: nil, created_at: nil, updated_at: nil>}} 

чтобы уточнить, разница в том, что запросы на контроллер сообщений, кажется, получают две копии поста, один, как Params [0] [ «сообщение»] и один, как params ["post"], тогда как мой код дает только один.

Единственный код, который, кажется, чтобы определить вызов RemoteObject является

<mx:RemoteObject id="postRO" destination="rubyamf" endpoint="rubyamf/gateway" source="PostsController" showBusyCursor="true" fault="onFault(event)"> 
    <mx:method name="index" result="onIndexResult(event)"/> 
    <mx:method name="save" result="onSaveResult(event)"/> 
    <mx:method name="destroy" result="onDestroyResult(event)"/> 
</mx:RemoteObject> 

private function onAddPost(event:MouseEvent):void 
     { 
      var post:PostVO = new PostVO(); 
      post.title = addTitleText.text; 
      post.body = addBodyText.text; 
      post.comments = new Array(); 
      postRO.getOperation("save").send({post:post}); 
     } 

, а затем определение объекта значение

package com.unitedmindset.vo 
{ 
    [RemoteClass(alias="PostVO")] 
    [Bindable] 
    public class PostVO 
    { 
     public function PostVO() 
     { 
     } 

     public var id:int; 
     public var title:String; 
     public var body:String; 
     public var createdAt:Date; 
     public var updatedAt:Date; 

     public var comments:Array; 

    } 
} 

в то время как мой собственный код выглядит чертовски похож с

private function onAddCar(event:MouseEvent):void 
    { 
     var car:CarVO = new CarVO(); 
     car.name = addNameText.text; 
     car.bodyId = int(addBodyIdText.text); 
     car.componentInstances = new Array(); 
     carRO.getOperation("save").send({car:car}); 
    } 

    <mx:RemoteObject id="carRO" destination="rubyamf" endpoint="http://localhost:3000/rubyamf/gateway" source="CarsController" showBusyCursor="true" fault="onFault(event)"> 
     <mx:method name="index" result="onIndexResult(event)"/> 
     <mx:method name="save" result="onSaveResult(event)"/> 
     <mx:method name="destroy" result="onDestroyResult(event)"/> 
    </mx:RemoteObject> 
    <mx:RemoteObject id="componentInstanceRO" destination="rubyamf" endpoint="http://localhost:3000/rubyamf/gateway" source="ComponentInstancesController" showBusyCursor="true" fault="onFault(event)"> 
     <mx:method name="save" result="onCreateComponentInstanceResult(event)"/> 
    </mx:RemoteObject> 

package com.foo.vo 
{ 
    [RemoteClass(alias="CarVO")] 
    [Bindable] 
    public class CarVO 
    { 
     public function CarVO() 
     { 
     } 

     public var id:int; 
     public var userId:int; 
     public var name:String; 
     public var bodyId:int; 

     public var createdAt:Date; 
     public var updatedAt:Date; 

     public var componentInstances:Array; 
    } 
} 

Я предполагаю, что есть какая-то настройка конфигурации (предположительно в Flex), но я не могу вычтите, что это такое. Любые предложения о том, где искать? Благодарю.

ответ

1

Решила мою проблему. В rubyamf_config.rb (в папке конфигурации), необходимо добавить строку:

ParameterMappings.scaffolding = true 

Так что, да, установка была в рельсах, а не прогибается. Я предполагаю, что рельсы запускаются, а затем, когда начинается флэш, он спрашивает рельсы, в каком формате он хочет получать ответы (что имеет смысл, так как он также имеет дело с ClassMappings), а затем флэш-сообщения в приложение rails с использованием согласованного формата.

Смежные вопросы