资本化f.text_field

我有一个form_for,我希望x.textField中的任何值都以Upcase中的第一个字母出现(我在谈论编辑,其中文本字段由db值预先填充)。

您可以像这样大写它:

<%= form_for ... do |f| %> <%= f.text_field :name, :value => f.object.name.capitalize %> 

你可以用CSS做到这一点……

= f.text_field :some_attribute, style: 'text-transform: 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| %> 

<%= f.text_field :title %>

<%= f.text_field :description %>

<%= f.submit 'Update' %>

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