首先创建一个数据字典的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"],...],然后以后就再也没有问题了,这是为什么呢?
分享到:
相关推荐
7. **哈希与符号化键(Hashes and Symbolized Keys)**:在Rails中,使用符号作为哈希键可以提高性能,因为符号是不可变的,且在内存中只存储一次。 8. **部分视图(Partials)**:部分视图是可重用的视图代码块,...
文章中提到的“控制器与视图间的数据传递方法技巧”主要涉及Rails中如何在控制器和视图之间共享数据。在Rails中,控制器通常会将数据赋值给一个实例变量(如@articles),这个实例变量在视图模板中可以直接访问。...
RailsAdmin 是一个基于Ruby on Rails的后台管理界面引擎,它允许开发者快速创建和管理应用程序的数据,而无需从零开始编写复杂的前端界面。 RailsAdmin 的核心功能包括: 1. 数据CRUD操作:RailsAdmin 提供了完整...
4. **ActiveRecord**:这是Rails中的ORM(对象关系映射)库,它允许开发者用Ruby代码操作数据库,无需编写SQL。 5. **Scaffolding**:Rails的快速开发工具,能自动生成CRUD(创建、读取、更新、删除)操作的模型、...
rails-assets, 在 Rails 中,资产管理的解决 Rails 资产 Bundler 到 Bower 代理本自述文件涉及项目的开发方面。 访问站点了解如何在你的应用程序中使用 Rails 资产。 插件开发设置git clone git@github.com:tenex/r
upmin-admin 是一个为 Rails 应用开发的开源管理框架。用来管理 Rails 应用中各种对象(如 Model、View 和 Controller )。 标签:upmin
此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...
5. **Gemfile与Bundler**:Rails项目通常使用Gemfile来管理依赖库,Bundler工具则用于安装和管理这些依赖,确保在不同环境下项目的运行一致性。 6. **Scaffolding**:Rails提供了快速生成基本CRUD(Create, Read, ...
模型负责数据操作,视图用于展示用户界面,而控制器则作为两者之间的桥梁,处理用户请求并调用模型方法。在Aptana中,你可以直接在这些目录中编写相应的Ruby代码,IDE会提供代码补全和错误检查等功能。 例如,要在...
在Rails中使用SSL(安全套接层)是构建Web应用时确保数据传输安全的重要步骤。Rails框架支持在应用程序中轻松集成SSL,以保护用户敏感信息,如登录凭据和支付详情。以下是一些关于在Rails中实施SSL的关键知识点: 1...
在Rails中,这通常是通过`<%= f.date_field :date_field_name %>`这样的辅助方法实现的,这里的`:date_field_name`是模型中的属性名。然后,我们可以使用WebCalendar.js为这个输入字段添加日期选择功能。在...
标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...
rails-i18n, 用于收集 Ruby on Rails i18n 环境数据以及其他有趣的Rails 相关 i18n 内容的存储库 Rails 语言环境数据存储库 中心收集区域设置数据,以便在 ruby 上使用。 gem-安装添加到你的Gemfile:gem 'rails-i18n...
在Rails中,最常用的分页库是`Kaminari`和`WillPaginate`。这里我们将以`Kaminari`为例进行讲解,因为它是近年来更受欢迎的选择,且具有简洁的API和良好的社区支持。 1. **安装Kaminari** 在Gemfile中添加`...
这一章节将讨论Rails中的安全特性,如防止SQL注入、跨站脚本攻击(XSS)和跨站请求伪造(CSRF)等。通过实施这些防护措施,可以大大降低应用遭受攻击的风险。 #### 9. Advanced Topics(高级主题) 这一部分将覆盖...
在Rails项目中安装Mongrel通常通过RubyGems进行,这是一个Ruby的包管理器。首先确保RubyGems已经安装,然后在命令行执行以下命令: ```bash gem install mongrel ``` 安装完成后,可以通过`mongrel_rails`命令来...
控制器处理HTTP请求,调用模型方法,操作数据,并决定哪个视图应该被渲染。例如,`UsersController`可能有`create`、`show`、`update`等动作,分别对应用户创建、查看个人资料和更新信息。 8. **安全性与最佳实践*...
- 如何在Rails中实现RESTful接口。 - **案例分析**: - 分析一个典型的RESTful应用示例。 #### 九、练习作业2-在Group里面发表文章-双层RESTFul - **目标**: - 在Group中添加Post功能。 - **实现过程**: - 创建...
标题中的“Ruby-Administrate”指的是Administrate框架,它是一个为Ruby on Rails应用程序设计的强大而灵活的后台管理界面。这个框架使得开发者能够快速且容易地构建出功能丰富的管理界面,以便于管理员对数据库中的...
ActionController是Rails中的一个关键组件,它处理HTTP请求,调用控制器方法,并返回响应。控制器方法可以操作模型,处理数据,然后选择适当的视图来呈现结果。对于API应用,通常返回JSON或XML格式的数据。 在Rails...