Simple_Forms Wrapper

Witam serdecznie, moja aplikacja do generowania formularzy używa SimpleForms.
Potrzebuje nadpisać kilka elementów na stronie, w tym celu chciałem użyć Wrapper’a:

W tym dopisuje do simple_form.rb poniższy kod, no właśnie,.
Do czego odnosi się poniższy kod ?
Pierwsza linia tworzy jakiegoś div’a ? A czym jest “tag” ?
O co chodzi z następnymi liniami ?

Z góry dzięki za wyjaśnienie.

 config.wrappers :inline_checkbox, :tag => 'div', :class => 'control-group', :error_class => 'error' do |b|
      b.use :html5
      b.wrapper :tag => 'div', :class => 'controls' do |ba|
        ba.wrapper :tag => 'label', :class => 'checkbox' do |bb|
          bb.use :input
          bb.use :label_text
        end
        ba.use :error, :wrap_with => { :tag => 'span', :class => 'help-inline' }
        ba.use :hint,  :wrap_with => { :tag => 'p', :class => 'help-block' }
      end
    end

Nigdy nie bawiłem się z simple_form w ten sposób jednak wydaje mi się, że ten kod najzwyczajniej na świecie zmienia to w jaki sposób są otaczane elementy formularza w tym przypadku checkbox.

Na stronie wszystko jest opisane co jak działa także prawdę mówiąc nie wiem na czym polega problem.

Ale idąc po kolei z pytaniami to:

Kod odnosi się do stworzenia nowej “otoczki” tj. wrappera do którego można odnieść się poprzez
:inline_checkbox
np. tak jak jest podane na przykładzie tj.
f.input :remember_me, :wrapper => :inline_checkbox

Pierwsza linia odnosi się do zdeklarowania, że otoczka będzie div’em z klasą control-group czyli tam gdzie umieścisz w kodzie f.input :remember_me, :wrapper => :inline_checkbox to tak naprawdę wkoło tego elementu zostanie stworzony <div class="control-group"> a reszta rekursywnie czyni to samo tylko, że dla wszystkich elementów które są generowane przez f.input (jednak co do tej 2giej części nie mam 100% pewności). Co do tematu tagów polecam lekturę.

2 Likes

Wielkie dzięki, bardzo mi pomogłeś …