Вход вложенного множества внутри f.label (направляющие формируют поколение),

Я хочу использовать f.label метод для создания моих маркировок элемента формы, однако - я хочу вложить элемент формы в маркировке. Действительно ли это возможно?

- От W3C-

Для соединения маркировки с другим управлением неявно элемент управления должен быть в содержании элемента МАРКИРОВКИ. В этом случае МАРКИРОВКА может только содержать один элемент управления. Сама маркировка может быть расположена прежде или после связанного управления.

В этом примере мы неявно связываем две маркировки с двумя средствами управления вводом текста:

<form action="..." method="post">
 <p>
  <label>
     First Name
     <input type="text" name="firstname" />
  </label>
  <label>
     <input type="text" name="lastname" />
     Last Name
  </label>
  </p>
</form>
18
задан Bruno Casali 5 November 2014 в 23:15
поделиться

2 ответа

Это невозможно с помощью встроенных в Rails помощников label или label_tag, поскольку они не принимают блок. Однако, если вам нужна вложенность, то почему бы вам просто не использовать HTML-элемент напрямую? -

<label>
  <%= f.text_field :firstname %>
</label>
1
ответ дан 30 November 2019 в 06:54
поделиться

Вы можете использовать настраиваемый FormBuilder, чтобы разрешить помощнику меток принимать блок. Это так просто:

class SmartLabelFormBuilder < ActionView::Helpers::FormBuilder
  def label(method, content_or_options_with_block = nil, options = {}, &block)
    if !block_given?
      super(method, content_or_options_with_block, options)
    else
      options = content_or_options_with_block.is_a?(Hash) ? content_or_options_with_block.stringify_keys : {}

      @template.content_tag(:label, options, &block)
    end
  end
end

Затем вы можете использовать свой конструктор форм следующим образом:

<% form_for(@article, :builder => SmartLabelFormBuilder) do |form| %>
  <% form.label(:title) do %>
    Title
    <%= form.text_field(:title) %>
  <% end %>
<% end %>
8
ответ дан 30 November 2019 в 06:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: