将 f.text_field 大写

问题描述 投票:0回答:4

我有一个 form_for,我希望 x.textField 中的任何值都以大写形式显示第一个字母(我说的是文本字段由 db 值预填充的编辑)。

ruby-on-rails form-for capitalization
4个回答
7
投票

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

= f.text_field :some_attribute, style: 'text-transform: capitalize;'


6
投票

你可以这样大写:

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

2
投票

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

0
投票

您也可以在控制器的创建/更新操作中执行此操作,如下所示

def create

  @user = User.new(params[:user])
  @user.name = params[:user][:name].capitalize

  if @user.save
   #do something
  else
   #do something else
  end

end
© www.soinside.com 2019 - 2024. All rights reserved.