2011-06-29 10 views
6

Poszukuję ogólnego sposobu zastosowania zewnętrznych frameworków CSS w aplikacji Rails. Te frameworki zazwyczaj definiują zestaw nazw klas, które powinny być używane dla pewnych elementów HTML.Ustaw domyślną klasę CSS dla metod pomocniczych kreatora formularzy Railsów

Rozważ jQuery UI. Aby achive spójnej formie styl, byś coś takiego:

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

Robi to dla każdego pola wejściowego nie jest sucha w ogóle.

Nawet metoda pomocnika jak

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

lub

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

nie wygląda dobrze (lub więcej suchej), ponieważ nadal musiałby dotknąć wygenerowany widok formularza ...

Alternatywnymi sposobami może być teraz łatanie małpy klasy InstanceTag lub włamywanie się do pomocnika form_for.

Czy ktoś to wcześniej zrobił?

Nawiasem mówiąc: Chciałbym uniknąć przy użyciu jQuery (lub Javascript w ogóle), aby zastosować atrybuty klasy, ponieważ JS może być wyłączone lub zablokowane lub nawet dostarczane z opóźnieniem i spowodować migotanie ...

Cheers,
Dominik

Odpowiedz

0

https://github.com/phallstrom/form_helper_css

nie można określić klas chcesz, ale doda rozsądne nazwy klas do wszystkich wejść, co pozwala na łatwe ich cel (we wszystkich przeglądarkach).

+0

Przynajmniej, jest to świetny moment, aby zacząć budować bardziej ogólny sposób dodawania klas specyficznych dla ram. Dziękuję Ci! – DMKE