2011-02-09 12 views
5

Tengo un form_for y quiero que cualquier valor dentro de x.textField aparezca con la primera letra en Upcase (estoy hablando de la edición donde los campos de texto están prellenados por los valores db).Capitalize f.text_field

Respuesta

6

Usted puede sacar provecho de esta manera:

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

solución de Pan Thomakos funcionará, pero si no quieren tener que añadir :value => f.object.name.capitalize a todos los campos de texto del formulario, usted podría mirar en la escritura de su propio FormBuilder.

Ponga esto en alguna parte del camino de carga, como 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 

Uso:

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

también se puede hacer esto en acción create/actualización del controlador como se indican a continuación

def create 

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

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

end 
+0

esto no es recomendable, ya que la lógica de transformación campos debe ser colocado en los modelos: "controladores delgadas, modelos de grasa" – caesarsol

+1

tiene usted razón, pero aquí por la simplicidad acaban de explicar la idea de que cómo se puede sacar provecho. es por eso que es mejor juntar las cosas como una idea general de lo que está pasando! –

3

Puede hacer esto con CSS ...

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

Cuestiones relacionadas