Подтвердить что ты не робот

Rails 4 формирует форму с полной поддержкой для Twitter Bootstrap 3

Есть ли какие-либо Rails 4 совместимые формы builder gem (s), которые обеспечивают всестороннюю поддержку блогов Twitter Bootstrap 3.0.0?

Здесь приведен пример того, что я считаю "всеобъемлющей" поддержкой:

  • Поддержка всех 3 макетов (базовая, горизонтальная, встроенная)
  • Поддержка основных типов ввода (вход, текстовое поле, выбор и т.д.)
  • Поддержка как уложенных, так и встроенных флажков/радиокнопок
  • Поддержка всех входных состояний (фокус, отключена, проверка)
  • Поддержка текстовых сообщений/сообщений об ошибках
  • Поддержка ввода-добавления/добавления (теперь называемая входной группой в TWBS3).
  • Поддержка работы с элементами определенной формы Rails. date_select (inline select boxes)

Подробнее о формах TWBS3 см. в документах TWBS3 и WIP github.

Я посмотрел как на simple_form, так и на twitter_bootstrap_form_for, и пока оба добиваются прогресса как представляется, предлагать достаточное решение на данный момент.

Простая форма

Появляется решение для основного макета, однако из-за того, что я вижу горизонтальные формы, в настоящее время невозможно из-за дополнительной разметки сетки, требуемой TWBS3.

https://github.com/plataformatec/simple_form/pull/864 https://github.com/plataformatec/simple_form/issues/857

Форма загрузки блогов Twitter для

Этот запрос на перенос выглядит многообещающим, но я вижу некоторые неточности в разметке и используемых классах.

https://github.com/stouset/twitter_bootstrap_form_for/pull/84

4b9b3361

Ответ 1

В моем собственном опыте с использованием метода Bootstrap и simple_form/form_builder заключается в том, что simple_form не стоит проблем. Есть слишком много вещей, что простая форма не имеет ответа на макет и управление мудрыми, некоторые ключевые черные пятна являются классами на тегах обертки, выбираются с атрибутами html или делают что-то простое, как группы кнопок начальной загрузки, которые имитируют переключатели/переключатели. Поддержка i18n в simple_form также была проблемой, требующей много дублирования.

Также подумайте, подходит ли рендеринг на стороне сервера для современного приложения. Я перехожу от традиционного рельса/серверной визуализации к модели SPA (Single Page Application). Для этого я использую backbone.js и марионетку с эко-шаблонами и coffeescript.

Архитектурно метод построения формы simple_form/rails выглядит немного ошибочным, и внутри него есть много сложного кода для создания по существу фрагмента строки html.

Ну, я говорю, что это за шаблоны представлений!

В конце дня представление составлено из множества различных шаблонов подвариантов (например, частичных), и я думаю, что он должен перейти прямо к компонентам управления/поля. Напротив, подход строителя всегда улавливается из-за отсутствия поддержки различных компонентов jquery и на самом деле не достаточно подвижен, чтобы идти в ногу со временем.

Я бы предложил использовать параметризованные шаблоны/частичные шаблоны представлений, которые кодируют разметку, которую вы хотите для каждого типа элементов управления/компонентов или представлений в своем приложении, и просто создавайте их для получения желаемого макета. Если вы делаете эту серверную часть, вы можете обернуть все частичные вызовы рендеринга некоторыми помощниками для синтаксической сладости. Если вы делаете это на стороне клиента с помощью eco-шаблонов, проверьте главную страницу, вы увидите пример создания и создания шаблонов для создания форм.

Не запирайтесь на возможности компоновщика форм, используйте примеры документации boostrap в качестве отправной точки для ваших шаблонов и просто позвоните им!

Ответ 2

Вы проверили https://github.com/potenza/bootstrap_form? Мы просто добавили поддержку Bootstrap 3 и очень легкий.

Мы поддерживаем почти все ваши требования, но мы по-прежнему работаем над хорошим решением для выбора даты и времени, поскольку они в настоящее время сложены по умолчанию.

Вот пример формы в erb:

<%= bootstrap_form_for(@user) do |f| %>
  <%= f.email_field :email %>
  <%= f.password_field :password %>
  <%= f.check_box :remember_me %>
  <%= f.submit "Log In" %>
<% end %>

И вывод:

<form accept-charset="UTF-8" action="/users" class="new_user" id="new_user" method="post">
  <div class="form-group">
    <label for="user_email">Email</label>
    <input class="form-control" id="user_email" name="user[email]" type="email">
  </div>
  <div class="form-group">
    <label for="user_password">Password</label>
    <input class="form-control" id="user_password" name="user[password]" type="password">
  </div>
  <div class="checkbox">
    <label for="user_remember_me">
      <input name="user[remember_me]" type="hidden" value="0">
      <input id="user_remember_me" name="user[remember_me]" type="checkbox" value="1"> Remember me
    </label>
  </div>
  <input class="btn btn-default" name="commit" type="submit" value="Log In">
</form>

Ответ 3

Попробовав это недавно, есть некоторые хаки, чтобы заставить работать simple_form работать, я бы сказал, что он еще не готов к прайм-тайму. Вернитесь к простой форме через несколько недель, тем временем вы можете создать свою разметку вручную или жить с неудобными формами с помощью simple_form до ее обновления.

Вы можете отслеживать его прогресс здесь: https://github.com/rafaelfranca/simple_form-bootstrap/pull/28