Flex集成Rails

news/2024/5/19 17:35:40 标签: Rails, Flex, XML, Adobe, ActionScript
Adobe发布了RailsFlex集成方案:
[url=http://code.google.com/p/rubyonrails-ria-sdk-by-adobe/]rubyonrails-ria-sdk-by-adobe[/url]

其中对FlexRails集成给出了几个例子,这里来与大家分享下最简单的xml交互方式
这种方式对后台服务端语言实际上没有限制,是最independent的

首先建立一个TopicsController:
[code]
class TopicsController < ApplicationController

def list
@topics = Topic.find(:all)
render : xml => @topics.to_xml
end

def create
@topic = Topic.new(params[:topic])
@topic.save
render : xml => @topic.to_xml
end

def update
@topic = Topic.find(params[:id])
@topic.update_attributes(params[:topic])
render : xml => @topic.to_xml
end

def delete
@topic = Topic.find(params[:id])
@topic.destroy
render : xml => @topic.to_xml
end

end
[/code]
这里我们的每个action都返回对象或对象数组的xml格式
比较郁闷的是每个方法最后都必须render一个:xml,否则ActionScript会报Error #2032 Stream Error,但是不影响操作结果

然后创建一个test.mxml:
[code]
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="listTopics.send()">
<mx:Script>
<![CDATA[
private function clearForm():void
{
title.text = ""
content.text = "";
}
private function sendTopicUpdate():void
{
var topic:Object = new Object();
topic['id'] = topic_list.selectedItem.id;
topic['topic[' + 'title' +']'] = title.text;
topic['topic[' + 'content' +']'] = content.text;

updateTopic.send(topic);
}
]]>
</mx:Script>
<mx:HTTPService id="listTopics" url="http://localhost:3000/topics/list" method="POST"/>
<mx:HTTPService id="updateTopic" url="http://localhost:3000/topics/update" method="POST" result="listTopics.send()"/>
<mx:HTTPService id="deleteTopic" url="http://localhost:3000/topics/delete" method="POST" result="listTopics.send()"/>
<mx:HTTPService id="createTopic" url="http://localhost:3000/topics/create" method="POST" result="listTopics.send()" contentType="application/xml">
<mx:request xmlns="">
<topic>
<title>{title.text}</title>
<content>{content.text}</content>
</topic>
</mx:request>
</mx:HTTPService>

<mx:VDividedBox x="0" y="0" height="100%" width="100%">
<mx:Panel width="100%" height="222" layout="absolute" title="Create/Update Topics">
<mx:Form x="10" y="10" width="930" height="100">
<mx:FormItem label="Title">
<mx:TextInput width="220" id="title" text="{topic_list.selectedItem.title}"/>
</mx:FormItem>
<mx:FormItem label="Content">
<mx:TextInput width="220" id="content" text="{topic_list.selectedItem.content}"/>
</mx:FormItem>
</mx:Form>
<mx:ControlBar horizontalAlign="right">
<mx:Button label="Clear" click="clearForm()"/>
<mx:Button label="Update" click="sendTopicUpdate(); clearForm()"/>
<mx:Button label="Create" click="createTopic.send(); clearForm()"/>
</mx:ControlBar>
</mx:Panel>
<mx:Panel width="100%" height="100" layout="absolute" title="Topics">
<mx:DataGrid x="0" y="0" width="100%" height="100%" id="topic_list" dataProvider="{listTopics.lastResult.topics.topic}">
<mx:columns>
<mx:DataGridColumn headerText="ID" dataField="id"/>
<mx:DataGridColumn headerText="Title" dataField="title"/>
<mx:DataGridColumn headerText="Content" dataField="content"/>
</mx:columns>
</mx:DataGrid>
<mx:ControlBar horizontalAlign="right">
<mx:Button label="Delete" click="deleteTopic.send({id:topic_list.selectedItem.id})"/>
</mx:ControlBar>
</mx:Panel>
</mx:VDividedBox>

</mx:Application>
[/code]
<mx:HTTPService/>标签指定我们要访问的url即可,其中可以设置result钩子方法
result钩子方法让CUD操作后更新Topics列表
Clear、Update、Create和Delete这四个Button的click事件分别指定做清除表单、UCD操作
而creationComplete="listTopics.send()"以及上面的result钩子方法则做R操作

http://www.niftyadmin.cn/n/728151.html

相关文章

开篇之-我的自传

姓名&#xff1a;金猫,性别:雄&#xff0c;年龄&#xff1a;大于等于27小于等于27&#xff0c;籍贯&#xff1a;“在那遥远的地方...” 。1980年2月14日&#xff0c;我来到了俗世红尘&#xff0c;4月9日抱户口&#xff0c;成为正式公民&#xff0c;旁人皆误会我为射手座。我喜欢…

江苏大学计算机学院补贴,江苏大学计算机学院江苏大学智能科学与技术教学系统采购信息公示...

1、机组运行环境条件温度&#xff1a;室内0℃~35℃室外-15℃~45℃湿度&#xff1a;20%~80%RH海拔&#xff1a;&#xff1c;1000米2、机组电气性能输入电压范围&#xff1a;三相电压&#xff1a;380V(&#xff0d;15%~&#xff0b;15%)频率&#xff1a;50Hz2Hz3、机组主要参数精…

method_missing了解10件事

我可不是标题党&#xff0c;题目是原作者起的 [urlhttp://www.thirdbit.net/articles/2007/08/01/10-things-you-should-know-about-method_missing/]10 things you should know about method_missing[/url]1&#xff0c;method_missing是一个Ruby内核方法2&#xff0c;Rails使…

iar怎么新建立项目_辣圈——新零售餐饮项目市场怎么样?新零售是时代发展的新方向?...

自从“新零售”概念提出以后&#xff0c;很多行业已经开始效仿并且运用&#xff0c;并且是有着不错的成果&#xff0c;可能有人会问&#xff1a;“新零售”概念是谁提出来的呢&#xff1f;其实&#xff0c;早在2016年10月份就被马云所提出来。现在越来越多的企业开始线上线下的…

反射学习笔记(一)

1、什么是反射 Reflection&#xff0c;中文翻译为反射。 这是.Net中获取运行时类型信息的方式&#xff0c;.Net的应用程序由几个部分&#xff1a;‘程序集(Assembly)’、‘模块(Module)’、‘类型(class)’组成&#xff0c;而反射提供一种编程的方式&#xff0c;让程序员…

学前儿童计算机应用基础试卷,2019-2020年学前儿童文学试卷及答案.docx

2016—2017—1期末考试2016—2017 学第度第 一 学期《 学前儿童文学 》考试( 考 查 )试卷(A )卷题号一二三四五六七总分得分评卷人一、多项选择题(本大题共10小题&#xff0c;每小题3分&#xff0c;共30分)答题卡&#xff1a;12345678910在每小题列出的四个备选项中有一个至四个…

介绍Cairngorm

[urlhttp://labs.adobe.com/wiki/index.php/Cairngorm]Cairngorm[/url]是Adobe Labs上的Flex MVC框架 Cairngorm文档很少&#xff0c;其Wiki上有核心开发人员[urlhttp://weblogs.macromedia.com/swebster/]Steven Webster[/url]写了6篇文章来介绍Cairngorm: [urlhttp://www.ado…

cacheAddMethod方法

display方法会带来效率上的损失,因为每当界面刷新时都会调用display方法,在Inside Dynamics AX在性能(一)这一节介绍了用cacheAddMethod提升性能的做法.FormDataSource的cacheAddMethod可以将display的返回值打包发送到客户端,只有在调用FormDataSource的reread,create和write方…