我有一个 form_for,我希望 x.textField 中的任何值都以大写形式显示第一个字母(我说的是文本字段由 db 值预填充的编辑)。
你可以用CSS做到这一点...
= f.text_field :some_attribute, style: 'text-transform: capitalize;'
你可以这样大写:
<%= form_for ... do |f| %>
<%= f.text_field :name, :value => f.object.name.capitalize %>
Pan Thomakos 的解决方案可行,但如果您不想将
:value => f.object.name.capitalize
添加到表单上的每个文本字段,您可以考虑编写自己的 FormBuilder。
将其放在加载路径中的某个位置,例如 lib/capitalizing_form_builder.rb
class CapitalizingFormBuilder < ActionView::Helpers::FormBuilder
def text_field(method, options = {})
@object || @template_object.instance_variable_get("@#{@object_name}")
options['value'] = @object.send(method).to_s.capitalize
@template.send(
"text_field",
@object_name,
method,
objectify_options(options))
super
end
end
用途:
<% form_for(@post, :builder => CapitalizingFormBuilder) do |f| %>
<p>
<%= f.text_field :title %>
</p>
<p>
<%= f.text_field :description %>
</p>
<p>
<%= f.submit 'Update' %>
</p>
<% end %>
您也可以在控制器的创建/更新操作中执行此操作,如下所示
def create
@user = User.new(params[:user])
@user.name = params[:user][:name].capitalize
if @user.save
#do something
else
#do something else
end
end