- <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