我正在使用simple_form gem在ROR4上构建一个表单来修改我的用户数据。问题是我的数据库被规范化以使用小写的名字和姓氏。所以我的用户模型中有以下内容:
before_save :lowercase_names
def lowercase_names
self.first_name.downcase!
self.last_name.downcase!
end
但是当我使用用户对象填充upadate表单时,我得到以下内容:
First name: carlos
Last name: ledezma
我想知道是否有办法覆盖这种行为,所以Rails会打印出来:
First name: Carlos
Last name: Ledezma
即,字段的标题化版本。
提前感谢您的帮助
答案 0 :(得分:1)
在表单中将值设置为标题名称
=f.input :first_name, :value => @user.first_name.titleize
以上一行会因您是否使用简单表格而有所不同。但它会给你基本的想法。您正在覆盖输入字段的值
如果希望在任何地方更改它,请覆盖first_name和last_name的getter
def last_name
self.read_attribute(:last_name).titleize
end
def first_name
self.read_attribute(:first_name).titleize
end
请注意,这会在您调用getter的所有地方标记您的名字和姓氏
答案 1 :(得分:0)
尝试使用表单中text_field
帮助器的value属性将显示的值设置为大写的名字和姓氏:
<%= f.input :first_name, :value => f.object.first_name.capitalize %>
<%= f.input :last_name, :value => f.object.last_name.capitalize %>
答案 2 :(得分:0)
更新
此外,您可以在User
模型中覆盖getter方法,如:
def first_name
self.read_attribute(:first_name).capitalize
end
def last_name
self.read_attribute(:last_name).capitalize
end