0

我正在使用 simple_form gem 在 ROR4 上构建一个表单来修改我的用户数据。问题是我的数据库被规范化为小写用户的名字和姓氏。所以我的用户模型中有以下内容:

before_save :lowercase_names

def lowercase_names
  self.first_name.downcase!
  self.last_name.downcase!
end

但是当然,当我用用户对象填充我的更新表单时,我得到以下信息:

First name: carlos
Last name: ledezma

我想知道是否有办法覆盖这种行为,以便 Rails 会打印:

First name: Carlos
Last name: Ledezma

即,字段的标题版本。

在此先感谢您的帮助

4

3 回答 3

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 的任何地方命名您的名字和姓氏

于 2013-10-16T15:51:29.853 回答
0

尝试text_field在表单中使用助手的 value 属性将显示的值设置为大写的名字和姓氏:

<%= f.input :first_name, :value => f.object.first_name.capitalize %>
<%= f.input :last_name,  :value => f.object.last_name.capitalize %>
于 2013-10-16T15:51:32.620 回答
0

更新

此外,您可以覆盖User模型中的 getter 方法,例如:

def first_name
  self.read_attribute(:first_name).capitalize
end

def last_name
  self.read_attribute(:last_name).capitalize
end
于 2013-10-16T16:02:43.160 回答