Установить класс CSS по умолчанию для вспомогательных методов конструктора форм Rails

Я ищу общий способ применения некоторых внешних CSS-фреймворков в приложении Rails.Эти структуры обычно определяют набор имен классов, которые должны использоваться для определенных элементов HTML.

Рассмотрим пользовательский интерфейс jQuery. Чтобы добиться единообразия стиля формы, вы должны сделать что-то вроде этого:

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

Выполнение этого для каждого поля ввода не является СУХИМ.

Даже вспомогательный метод, такой как

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

или

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

, выглядит неправильно (или подробнее DRY), поскольку вам все равно придется прикоснуться к сгенерированному представлению формы ...

Альтернативными способами теперь могут быть исправление класса InstanceTag или взлом хелпера form_for .

Кто-нибудь делал это раньше?

Кстати: я бы избегал использования jQuery (или Javascript в целом) для применения атрибутов класса, так как JS может быть отключен, заблокирован или даже доставлен с задержкой и может вызвать мерцание ...

Ура,
Доминик

6
задан DMKE 16 July 2011 в 20:09
поделиться