原创作者: hideto
阅读:1338次
评论:0条
更新时间:2011-05-26
看一个场景,用户注册时需要填写First Name,Last Name,Password:
我们可以使用虚拟属性来简化:
这样,我们输入Full Name而不是分别输入first_name和last_name,我们需要修改User类:
通过虚拟一个full_name属性来简化工作,当然,这需要确保用户输入的full_name中有空格:
<h1>Register</h1> <% form_for :user, :url => users_path do |f| %> <p> First Name<br/> <%= f.text_field :first_name %> </p> <p> Last Name<br/> <%= f.text_field :last_name %> </p> <p> Password<br/> <%= f.password_field :password %> </p> <p> <%= submit_tag 'Register' %> </p> <% end %>
我们可以使用虚拟属性来简化:
<h1>Register</h1> <% form_for :user, :url => 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而不是分别输入first_name和last_name,我们需要修改User类:
class User < ActiveRecord::Base 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 end
通过虚拟一个full_name属性来简化工作,当然,这需要确保用户输入的full_name中有空格:
def validate validate.errors.add(:full_name, 'must have a space') unless full_name.include? ' ' end
评论 共 0 条 请登录后发表评论