016 虚拟属性

简介:

Virtual Attributes

Keep your controllers clean and forms flexible by adding virtual attributes to your model. This very powerful technique allows you to create form fields which may not directly relate to the database.

通过在model里添加虚拟属性,保证controller中的代码整洁和表单的灵活性。这个非常强大的技术允许你创建与数据库非直接相关的表单字段。

还是以注册为例:

注册页面有
First Name___________
Last Name___________
Pasword_____________
现在用一个full_name的虚拟属性来代替First Name和Last Name这两个字段。
首先在视图中将两个text_field改成一个:
<h1>Register</h1>
<% form_for :user, :user=>users_path do |f|%>
<p>
Full Name<br/>
<%=f.text_field :full_name%>
</p>
<p>
Password<br/>
<%= f.password_field :password%>
</p>
<p>
<%= submit_tag 'Register'%>
</p>
<% end %>

full_name是User的一个虚拟属性,它跟first_name和last_name相关联,first_name和last_name是定义在user里的对象属性。也是存储在数据库中的字段。

在model中要定义一个full_name的方法
还要定义一个full_name=(name)的方法
# models/user.rb
def full_name
  [first_name, last_name].join(' ')
end

def full_name=(name)
  split = name.split(' '2)
  self.first_name = split.first
  self.last_name = split.last
end

 




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/131662,如需转载请自行联系原作者
目录
相关文章
|
7月前
|
JavaScript
什么是虚拟DOM
什么是虚拟DOM
|
2天前
|
JavaScript 算法 前端开发
虚拟Dom
虚拟Dom
|
23天前
|
JavaScript 前端开发 算法
什么是虚拟dom
什么是虚拟dom
|
6月前
|
缓存 JavaScript
计算属性和侦听属性有什么区别?怎样选择
计算属性和侦听属性有什么区别?怎样选择
23 0
|
3月前
|
JavaScript 前端开发
虚拟表格和懒加载有什么区别
虚拟表格和懒加载有什么区别
15 0
|
9月前
|
JavaScript 前端开发
计算属性和监视属性的区别
计算属性和监视属性的区别
|
5月前
|
JavaScript
虚拟列表
虚拟列表
80 0
|
6月前
|
API 网络架构
虚拟机绑定浮动ip只能选择同一个路由器上的吗
在虚拟网络环境中,绑定浮动IP通常是与路由器相关的操作。虚拟机绑定浮动IP时,通常是通过路由器将浮动IP映射到虚拟机的内部IP地址。 在一些云平台中,浮动IP地址通常与特定的路由器相关联。因此,如果你想要将浮动IP绑定到虚拟机,通常需要选择与该虚拟机所在的VPC(虚拟私有云)或子网相关联的路由器。 具体来说,通常有以下步骤: 1. **选择浮动IP:** 在云平台的控制台或使用相关API时,选择要绑定的浮动IP。 2. **选择路由器:** 在绑定浮动IP时,通常需要选择一个路由器,将浮动IP与该路由器相关联。 3. **选择虚拟机:** 然后,你需要选择要将浮动IP绑定到的虚拟机。
622 1
|
9月前
|
移动开发 JavaScript 前端开发
什么是虚拟DOM?
虚拟dom是当前前端最流行的两个框架(vue和react)都用到的一种技术,都说他能帮助vue和react提升渲染性能,提升用户体验
|
11月前
为什么默认情况下析构函数不是虚拟的
为什么默认情况下析构函数不是虚拟的