使用ActiveScaffold增强Ruby on Rails的功能 - 编程入门网
POST 处理。
清单 13. 定制虚拟属性的窗体显示 def password_form_column(record, field_name) password_field_tag field_name, record.password end def password_confirmation_form_column(record, field_name) password_field_tag field_name, record.password_confirmation end 使用ActiveScaffold增强Ruby on Rails的功能(8)时间:2011-11-29 Mike Perham关系 到现在为止,我们只考虑了基本的模型操作,例如显示或编辑简单的列值。 ActiveScaffold 中最复杂的部分是确定模型之间的关系以及它们如何影响应用程序的用户界面。要正确 实现操作就几乎无法避开这一部分;本节将介绍如何配置 ActiveScaffold 来正确使用模型。 列 表显示 为了在模型之间进行导航,ActiveScaffold 会在一个列表视图中显示关系链接。举例来说 ,在查看一个组织列表时,会看到一个 Users 链接来显示一个页面,其中每个 Users 都对应一个给定的 Organization。要定制此链接,需要为该列定义一个帮助方法: 清单 14. 定制关联的显示 def users_column(record) name = "user" name = "users" if record.users.size > 1 "<a href="/user/list?user_id=#{record.id}">#{record.users.size} # {name}</a>" end 窗体显示 ActiveScaffold 还提供了基于所定义的关系在模型之间进行导航的功能。 以 belongs_to 关系为例。在上面的例子中,User belongs_to 一个组织。这就意味着一个 User 在创建 时必须具有一个相关的 Organization(如果 Organization 是可选的,那么您就应该使用一个可以为空 值的 has_one 关系)。 ActiveScaffold 可以理解这种关系,并可以使用 “select” 语句 从数据库中显示一个 Organizations 列表,这样用户可以选出与正在创建的 User 关联在一起的 Organization。 这对于只有 10 到 20 个 Organization 的小型数据集而言可以很好地工作,但 是却不能扩展到具有大量的 Organization 的情况。您可以使用窗体列渲染程序来重写对列的渲染。下面 给出了一个简单的例子,其中,您可以在开发时获悉可能的值: 清单 15. 使用静态选择列表 def organization_form_column(record, field_name) # simple example that just hard codes two possible values select_tag field_name, options_for_select(''IBM'' => ''1'', ''Lenovo'' => ''2'') end 使用ActiveScaffold增强Ruby on Rails的功能(9)时间:2011-11-29 Mike Perham搜索记录 ActiveScaffold 提供了一些有用的搜索功能来查找大型表中的记录。默认 情况下,scaffold 在上面的目录表中有一个 “Search” 链接,使用该链接可以打开一个文 本框,用户可以在这个文本框中输入搜索条件。ActiveScaffold 会创建一条 SQL 语句为模型搜索所有的 varchar 列,这样输入诸如 “ham” 之类的条件就可以找到基于姓氏的用户记录了。与其他 地方类似,这里也有几个配置选项。 实时搜索 当用户按下 Return 时,就会执行默认搜索 。ActiveScaffold 可以通过启用 “实时搜索” 选项来进行实时搜索。这会基于用户当前输 入每秒生成一个 Ajax 调用。记住,实时搜索可能是数据库密集型的。正如下面解释的一样,在使用这个 特性之前,要确保您已经配置了要搜索的列,并且已经正确地创建了表索引。 清单 16. 在实时搜 索和默认搜索之间进行切换 ActiveScaffold.set_defaults do |conf| conf.actions.exclude :search conf.actions.add :live_search end 调节可用性 清单 17. 调节 scaffold 的搜索配置 active_scaffold :user do |conf| |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |