Вложение ввода внутри метки с помощью Simple_Form и Rails 4

Я использую Rails 4 и Simple_Form для приложения, и для макета внешнего интерфейса, который я должен реализовать, мне нужно иметь тег ввода внутри тега метки. Вывод должен выглядеть так:

<label class="input string optional profile_first_name">
    <input class="string optional" type="text" value="" name="profile[first_name]" id="profile_first_name">
</label>

Я попытался создать пользовательскую оболочку, которая выглядела так:

config.wrappers :custom_form, tag: 'div', class: 'form-group', error_class: 'has-error' do |b|
  b.use :html5
  b.use :placeholder
  b.optional :maxlength
  b.optional :pattern
  b.optional :min_max
  b.optional :readonly

  b.wrapper tag: 'label' do |ba|
   ba.use :input
   ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
   ba.use :hint,  wrap_with: { tag: 'p', class: 'help-block' }
  end
end

Проблема, с которой я сталкиваюсь, заключается в том, что в результирующем html отсутствует текст метки, который обычно генерирует Smart_Form. Я уверен, что должен быть способ правильно отформатировать оболочку, чтобы отобразить ввод внутри тега метки и чтобы метка по-прежнему отображалась, но я в недоумении. Заранее спасибо!


person Chris    schedule 22.12.2015    source источник


Ответы (1)


Вы должны иметь возможность просто вставить ba.use :label_text везде, где вы хотите, чтобы метка отображалась.

b.wrapper tag: 'label' do |ba|
   ba.use :label_text
   ba.use :input
   ba.use :error, wrap_with: { tag: 'span', class: 'help-block' }
   ba.use :hint,  wrap_with: { tag: 'p', class: 'help-block' }
end
person Andy Harvey    schedule 19.03.2016