更改表单字段的默认填充字符串

时间:2013-10-16 15:40:40

标签: ruby-on-rails ruby forms field

我正在使用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

即,字段的标题化版本。

提前感谢您的帮助

3 个答案:

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