8

form_forがあり、x.textField内のすべての値がUpcaseの最初の文字で表示されるようにします(テキストフィールドにdb値が事前に入力される編集について話します)。

4

4 に答える 4

6

あなたはそれを次のように大文字にすることができます:

<%= form_for ... do |f| %>
  <%= f.text_field :name, :value => f.object.name.capitalize %>
于 2011-02-09T22:30:26.427 に答える
2

:value => f.object.name.capitalizePan Thomakosのソリューションは機能しますが、フォームのすべてのテキストフィールドに追加する必要がない場合は、独自の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 %>
于 2011-02-09T22:55:30.837 に答える
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
于 2013-08-13T10:28:40.097 に答える