快速业务通道

使用Rails、OpenLaszlo和Eclipse开发富Internet应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18
se 控制台。应该会看到 OpenLaszlo 插件创建了很多文件,其中包括 Rails Model 和 Rails Controller。

查看电影模型

通过导航到 apps > models > 并双击 movie.rb 查看控制器的模型。应该会看到如下代码:

class Movie < ActiveRecord::Base end

这两行代码展示了 Rails 的强大功能。class Movie 这一行实际上创建一个 Movie 对象,然后 Rails 可以将之映射到数据库中的电影表。Rails 可以这样做是因为它为数据库使用了特定命名约定,允许它将使用单数命名约定(此处为 Movie)的模型映射到总以复数形式命名的表。

Rails 还创建用于访问表中的行和属性的方法。Rails 这样做的方法是实现 ActiveRecord 模式,该模式允许 Rails 创建一个知道有关与数据库交互时需要的所有信息的类。

提示:阅读 “Crossing borders: Exploring Active Record”,了解有关 ActiveRecord 和数据库包装器如何工作的更多信息。

虽然您可能认为这是一个局限性,但很少出现您无法使用这些命名约定创建数据库的情况。对于那些您必须使用遗留数据库方案或者需要一些违反该约定的特定名称的极端情况,可以不予考虑。

查看电影控制器

下面来看应用程序的 Rails 控制器。导航到 movies > app > controllers > movie_controller.rb,然后双击打开。代码应如清单 3 所示。

清单 3. movie_controller.rb 文件

class MovieController < ApplicationController   # The following line defines methods that implement the OpenLaszlo   # REST API.   #   # To replace this file with a file that contains explicit method   # definitions, execute:   #  script/generate rest_scaffold movie   rest_scaffold :movie end

使用Rails、OpenLaszlo和Eclipse开发富Internet应用程序(12)

时间:2011-02-27 IBM Robi Sen

再一次,Rails 创建的 Ruby 代码只有两行。难以想像几次鼠标点击实际上已经创建了一个 REST XML Web 服务(尤其是您具有使用 J2EE 应用程序的经验时)。我们来确认一下。通过转到 Run > External Tools > Start WEBrick 启动 Rails Web 服务器。启动您喜欢的浏览器并转到 http://localhost:3000/movie。应该会看到如图 10 所示的内容。

图 10. 电影控制器生成的 XML 示例

实际上是从数据库生成 XML 的。

接下来生成 Laszlo 脚手架。首先通过单击 Eclipse 控制台上的红色 Stop 按钮停止 WEBrick 服务器。

Rails 为您生成方法

为了帮助更好地理解正在进行的工作,让我们看一下由 OpenLaszlo 生成的代码,其中使用了命令 script/generate rest_scaffold movie 以创建显式写出脚手架的每个方法的控件。

清单 4. Rails 快速创建方法

class MovieController < ApplicationController   # The following line can be used instead of the generated definitions   # of records, page, schema, create, etc. The generated definitions   # are provided as a starting point in case you need to modify them.   #   #rest_scaffold :movie   def records    # The default route places the range list in the id parameter.    # Retrieve it from there so that this action works with the default    # route.    ranges = RangeList.parse(params[:id] || '''', :domain_start => 1)    options = {}    options[:conditions] = ranges.to_sql_condition unless ranges.empty?     records = Movie.find :all, options    cou

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号