SimpleForm 2: входные теги внутри оболочки - PullRequest
5 голосов
/ 28 февраля 2012

Используя стандартную оболочку simple_form 2, он генерирует разметку, которая выглядит следующим образом:

<div class="...">
  <label>...</label>
  <input ... />
</div>

Я хотел бы получить разметку, в которой сам тег ввода находится внутри оболочки, например:

<div class="...">
  <label>...</label>
  <div class="...">
    <input ... />
  </div>
</div>

Нужно ли создавать пользовательский компонент для этого поведения?

Спасибо.

Николас.

1 Ответ

7 голосов
/ 28 февраля 2012

Проверьте это:

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

# Use this setup block to configure all options available in SimpleForm.
SimpleForm.setup do |config|
  # Wrappers are used by the form builder to generate a complete input.
  # You can remove any component from the wrapper, change the order or even
  # add your own to the stack. The options given to the wrappers method
  # are used to wrap the whole input (if any exists).

  config.wrappers :GIVE_YOUR_WRAPPER_A_NAME, :class => 'clearfix', :error_class => nil do |b|
    b.use :placeholder
    b.use :label
    b.use :tag => 'div', :class => 'WHATEVER_YOU_WANT_TO_CALL_IT' do |ba|
      ba.use :input
      ba.use :error, :tag => :span, :class => :'help-inline'
      ba.use :hint,  :tag => :span, :class => :'help-block'
    end
  end
end

Затем, когда вы создаете форму, просто укажите оболочку, которую вы хотите использовать:

<%= simple_form_for @user, wrapper: 'WHATEVER_YOU_CALLED_YOUR_WRAPPER' do |form| %>
<%end%>

Hopeэто помогает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...