`
wangxb_st
  • 浏览: 4912 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Rails中集中管理数据字典的方法

阅读更多
首先创建一个数据字典的model

ruby script/generate model dictionary


然后在create_dictionaries中添加字典表的定义:

def self.up
  create_table dictionaries do |t|
    t.string :category   # 分类,用以区别不同的字典
    t.string :display    # 字典的值,用于显示
    t.string :store      # 字典的键,用于存储,根据习惯,也可以用t.integer :store
    t.integer :parent_id # 自身关联,用以多级字典
  end
end


然后在Dictionary模型中增加类方法

def self.find_dictionary(conditions)
  dict = Dictionary.find(:all, :conditions => "category = \'#{conditions}\'", :select => "display, store")
  dict.collect {|d|[d.display, d.store]}
end

这个函数返回一个多重数组,便于在view中直接使用字典

假设字典中包含以下数据:
1, "EDUCATION", "初中以下", "1", nil
2, "EDUCATION", "高中", "2", nil
3, "EDUCATION", "专科", "3", nil
4, "EDUCATION", "本科", "4", nil
5, "EDUCATION", "硕士以上", "5", nil


在Member模型中将使用到这个字典,因此我们在member_controller.rb中添加
before_filter :load_dictionary, :include => [:index, :new, :edit, :show]


然后在Controller的protected端写以下代码:
def load_dictionary
  @education_dictionary = Dictionary.find_dictionary("EDUCATION")
end


然后在new或者edit中选择字典的部分写入
<% f.select, @education_dictionary, :prompt => "请选择学历" %>


在index或者show中写入
<%= @education_dictionary.rassoc(@member.education).at(0) %>

其中rassoc用于查找store对应的display,返回[display, store]数组,最后用at(0)返回display提供给页面显示。

有一个问题我弄不明白,第一次调用Dicionary.find_dictionary时,第一个组合的第一个元素是nil,即[[nil, "store1"],["display2", "store2"],...],然后以后就再也没有问题了,这是为什么呢?
1
0
分享到:
评论

相关推荐

    Ruby on Rails中文指南

    7. **哈希与符号化键(Hashes and Symbolized Keys)**:在Rails中,使用符号作为哈希键可以提高性能,因为符号是不可变的,且在内存中只存储一次。 8. **部分视图(Partials)**:部分视图是可重用的视图代码块,...

    Ruby on Rails中MVC结构的数据传递解析

    文章中提到的“控制器与视图间的数据传递方法技巧”主要涉及Rails中如何在控制器和视图之间共享数据。在Rails中,控制器通常会将数据赋值给一个实例变量(如@articles),这个实例变量在视图模板中可以直接访问。...

    Ruby-RailsAdmin一个Rails引擎提供了一个易于使用的界面来管理您的数据

    RailsAdmin 是一个基于Ruby on Rails的后台管理界面引擎,它允许开发者快速创建和管理应用程序的数据,而无需从零开始编写复杂的前端界面。 RailsAdmin 的核心功能包括: 1. 数据CRUD操作:RailsAdmin 提供了完整...

    Ruby On Rails中文教材(PDF)

    4. **ActiveRecord**:这是Rails中的ORM(对象关系映射)库,它允许开发者用Ruby代码操作数据库,无需编写SQL。 5. **Scaffolding**:Rails的快速开发工具,能自动生成CRUD(创建、读取、更新、删除)操作的模型、...

    rails-assets, 在 Rails 中,资产管理的解决.zip

    rails-assets, 在 Rails 中,资产管理的解决 Rails 资产 Bundler 到 Bower 代理本自述文件涉及项目的开发方面。 访问站点了解如何在你的应用程序中使用 Rails 资产。 插件开发设置git clone git@github.com:tenex/r

    Rails管理框架upmin-admin.zip

    upmin-admin 是一个为 Rails 应用开发的开源管理框架。用来管理 Rails 应用中各种对象(如 Model、View 和 Controller )。 标签:upmin

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

    rails指南 中文版

    5. **Gemfile与Bundler**:Rails项目通常使用Gemfile来管理依赖库,Bundler工具则用于安装和管理这些依赖,确保在不同环境下项目的运行一致性。 6. **Scaffolding**:Rails提供了快速生成基本CRUD(Create, Read, ...

    使用Aptana+Rails开发Rails Web应用(中文)

    模型负责数据操作,视图用于展示用户界面,而控制器则作为两者之间的桥梁,处理用户请求并调用模型方法。在Aptana中,你可以直接在这些目录中编写相应的Ruby代码,IDE会提供代码补全和错误检查等功能。 例如,要在...

    在Rails中使用SSL

    在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...

    rails中使用javascript日期控件

    在Rails中,这通常是通过`&lt;%= f.date_field :date_field_name %&gt;`这样的辅助方法实现的,这里的`:date_field_name`是模型中的属性名。然后,我们可以使用WebCalendar.js为这个输入字段添加日期选择功能。在...

    在rails中 使用RSpec生产CHM文档

    标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...

    rails-i18n, 用于收集 Ruby on Rails i18n 环境数据以及其他有趣的Rails 相关 i18n 内容的存储库.zip

    rails-i18n, 用于收集 Ruby on Rails i18n 环境数据以及其他有趣的Rails 相关 i18n 内容的存储库 Rails 语言环境数据存储库 中心收集区域设置数据,以便在 ruby 上使用。 gem-安装添加到你的Gemfile:gem 'rails-i18n...

    关于rails学习中分页的示例

    在Rails中,最常用的分页库是`Kaminari`和`WillPaginate`。这里我们将以`Kaminari`为例进行讲解,因为它是近年来更受欢迎的选择,且具有简洁的API和良好的社区支持。 1. **安装Kaminari** 在Gemfile中添加`...

    rails2-sample

    这一章节将讨论Rails中的安全特性,如防止SQL注入、跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等。通过实施这些防护措施,可以大大降低应用遭受攻击的风险。 #### 9. Advanced Topics(高级主题) 这一部分将覆盖...

    Rails 中mongrel的安装

    在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...

    Rails项目源代码

    控制器处理HTTP请求,调用模型方法,操作数据,并决定哪个视图应该被渲染。例如,`UsersController`可能有`create`、`show`、`update`等动作,分别对应用户创建、查看个人资料和更新信息。 8. **安全性与最佳实践*...

    Rails 101 入门电子书

    - 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...

    Ruby-Administrate一个框架用于在Rails中创建灵活的强大的管理仪表板

    标题中的“Ruby-Administrate”指的是Administrate框架,它是一个为Ruby on Rails应用程序设计的强大而灵活的后台管理界面。这个框架使得开发者能够快速且容易地构建出功能丰富的管理界面,以便于管理员对数据库中的...

    railsAPI

    ActionController是Rails中的一个关键组件,它处理HTTP请求,调用控制器方法,并返回响应。控制器方法可以操作模型,处理数据,然后选择适当的视图来呈现结果。对于API应用,通常返回JSON或XML格式的数据。 在Rails...

Global site tag (gtag.js) - Google Analytics