2011-06-29 12 views
6

Estoy buscando una manera genérica de aplicar algunos marcos CSS externos en una aplicación Rails. Estos marcos típicamente definen un conjunto de nombres de clase que deberían usarse para ciertos elementos HTML.Configurar clase CSS predeterminada para los métodos auxiliares del generador de formularios de Rails

Considere jQuery UI. Para achive un estilo de forma consistente, lo haría con algo como esto:

# in a view 
<% form_for @foo do |f| %> 
    ... 
    <%= f.text_field :bar, :class => ['ui-widget', 'ui-widget-content', 'ui-widget-container', 'ui-corner-all'] %> 
    or 
    <%= f.text_field :bar, :class => 'ui-widget ui-widget-content ui-widget-container ui-corner-all' %> 
<% end %> 

Hacer esto para cada campo de entrada no está seco en absoluto.

Incluso un método de ayuda como

# in application_helper.rb 
def jquery_ui_classes 
    'ui-widget ui-widget-content ui-widget-container ui-corner-all' 
end 

# in a view 
<%= f.text_field :bar, :class => jquery_ui_classes %> 

o

# in application_helper.rb 
def jquery_text_field(form_builder, method, opts = {}) 
    ui = ['ui-widget', 'ui-widget-content', 'ui-widget-container', 'ui-corner-all'] 
    klass = [opts.delete(:class), ui].flatten.compact 
    form_builder.text_field method opts.merge(:class => klass) 
end 

# in a view 
<%= jquery_text_field f, :bar %> 

no se ve bien (o más SECO), ya que a pesar de ello tiene que tocar la vista formulario generado ...

Formas alternativas ahora pueden ser parche de monos en la clase InstanceTag o piratear el form_for helper.

¿Alguien ha hecho esto antes?

Por cierto: me gustaría evitar el uso de jQuery (o Javascript en general) para aplicar los atributos de la clase, ya que JS podría ser desactivado o bloqueado o incluso entregado con retraso y causar un parpadeo ...

Saludos,
Dominik

Respuesta

0

https://github.com/phallstrom/form_helper_css

no puede especificar las clases que desee, pero va a añadir nombres de clases razonables para todas las entradas que le permite llegar fácilmente a ellos (en todos los navegadores).

+0

Al menos, ese es un gran punto para comenzar a construir una forma más general de agregar clases específicas de framework. ¡Gracias! – DMKE

Cuestiones relacionadas