Rails宝典之第十六式: 虚拟属性

看一个场景,用户注册时需要填写First Name,Last Name,Password: 
Java代码   收藏代码
  1. <h1>Register</h1>  
  2. <% form_for :user, :url => users_path do |f| %>  
  3.   <p>  
  4.     First Name<br/>  
  5.     <%= f.text_field :first_name %>  
  6.   </p>  
  7.   <p>  
  8.     Last Name<br/>  
  9.     <%= f.text_field :last_name %>  
  10.   </p>  
  11.   <p>  
  12.     Password<br/>  
  13.     <%= f.password_field :password %>  
  14.   </p>  
  15.   <p>  
  16.     <%= submit_tag 'Register' %>  
  17.   </p>  
  18. <% end %>  

我们可以使用虚拟属性来简化: 
Java代码   收藏代码
  1. <h1>Register</h1>  
  2. <% form_for :user, :url => users_path do |f| %>  
  3.   <p>  
  4.     Full Name<br/>  
  5.     <%= f.text_field :full_name %>  
  6.   </p>  
  7.   <p>  
  8.     Password<br/>  
  9.     <%= f.password_field :password %>  
  10.   </p>  
  11.   <p>  
  12.     <%= submit_tag 'Register' %>  
  13.   </p>  
  14. <% end %>  

这样,我们输入Full Name而不是分别输入first_name和last_name,我们需要修改User类: 
Java代码   收藏代码
  1. class User < ActiveRecord::Base  
  2.   def full_name  
  3.     [first_name, last_name].join(' ')  
  4.   end  
  5.   
  6.   def full_name=(name)  
  7.     split = name.split(' '2)  
  8.     self.first_name = split.first  
  9.     self.last_name = split.last  
  10.   end  
  11. end  

通过虚拟一个full_name属性来简化工作,当然,这需要确保用户输入的full_name中有空格: 
Java代码   收藏代码
  1. def validate  
  2.   validate.errors.add(:full_name, 'must have a space') unless full_name.include? ' '  
  3. end  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值