Próbuję zintegrować bootstrap 3 z simple_forms (z master).Bootstrap 3 + znaki proste_formularz
Teraz mam następujące:
config/inicjalizatory/simple_form.rb:
SimpleForm.setup do |config|
config.wrappers :default, class: :input,
hint_class: :field_with_hint, error_class: :field_with_errors do |b|
b.use :html5
b.use :placeholder
b.optional :maxlength
b.optional :pattern
b.optional :min_max
b.optional :readonly
b.use :label_input
b.use :hint, wrap_with: { tag: :span, class: :hint }
b.use :error, wrap_with: { tag: :span, class: :error }
end
config.default_wrapper = :default
config.boolean_style = :nested
config.button_class = 'btn'
end
config/inicjalizatory/simple_form_bootstrap.rb:
SimpleForm.setup do |config|
config.input_class = 'form-control'
config.wrappers :bootstrap, tag: 'div', class: 'form-group', error_class: 'error' do |b|
b.use :html5
b.use :placeholder
b.use :label
b.wrapper tag: 'div', class: 'controls' do |ba|
ba.use :input
ba.use :error, wrap_with: { tag: 'span', class: 'help-inline' }
ba.use :hint, wrap_with: { tag: 'p', class: 'help-block' }
end
end
config.wrappers :prepend, tag: 'div', class: "form-group", error_class: 'error' do |b|
b.use :html5
b.use :placeholder
b.use :label
b.wrapper tag: 'div', class: 'controls' do |input|
input.wrapper tag: 'div', class: 'input-prepend' do |prepend|
prepend.use :input
end
input.use :hint, wrap_with: { tag: 'span', class: 'help-block' }
input.use :error, wrap_with: { tag: 'span', class: 'help-inline' }
end
end
config.wrappers :append, tag: 'div', class: "form-group", error_class: 'error' do |b|
b.use :html5
b.use :placeholder
b.use :label
b.wrapper tag: 'div', class: 'controls' do |input|
input.wrapper tag: 'div', class: 'input-append' do |append|
append.use :input
end
input.use :hint, wrap_with: { tag: 'span', class: 'help-block' }
input.use :error, wrap_with: { tag: 'span', class: 'help-inline' }
end
end
config.default_wrapper = :bootstrap
end
app/views/devise/sessions/new.html.haml
%div.panel.panel-auth
%div.panel-heading
%h3.panel-title Sign in
%div.panel-body
= simple_form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f|
.form-inputs
= f.input :email, :required => false, :autofocus => true
= f.input :password, :required => false
= f.input :remember_me, :as => :boolean if devise_mapping.rememberable?
.form-actions
= f.button :submit, "Sign in"
%hr
= render "devise/shared/links"
Ale wygenerowany kod HTML jest nieprawidłowy. Cóż, to prawda, zgodnie z BS2, ale nie tak do BS3. Oto ona:
<div class="form-group boolean optional user_remember_me">
<label class="boolean optional control-label" for="user_remember_me">
Remember me
</label>
<div class="controls">
<input name="user[remember_me]" type="hidden" value="0">
<label class="checkbox">
<input class="boolean optional form-control" id="user_remember_me" name="user[remember_me]" type="checkbox" value="1">
</label>
</div>
</div>
Ale to faktycznie powinno być coś takiego:
<div class="checkbox">
<label>
<input type="checkbox"> Check me out
</label>
</div>
To chyba możliwe, aby rozwiązać ten problem hacking wokół opakowania, ale nie mogę dostać pracy. Czy ktoś może mi doradzić?
Cheers
nie działa. Wciąż dodaje klasę "form-control", która wszystko psuje. :/ – caarlos0
Dodaje klasę "form-control"? Nie widzę tego w twoim inicjatorze ... chyba że masz na myśli "grupę formularzy"? Jeśli nie, może się zdarzyć coś innego (być może niestandardowe dane wejściowe?). Upewnij się, że zrestartujesz serwer po zmianie inicjalizatora simple_form_bootstrap.rb lub zmiana nie zostanie wprowadzona. Właśnie przetestowałem ponownie na moim końcu i to działa dobrze z "opakowaniem:: checkbox" w linii wejściowej. – mwalsher
Pamiętaj, że używam również głównego oddziału simple_form (wersja 3.0.0) ... jest całkiem możliwe, że nastąpiła zmiana w stosunku do wersji, do której odwołuje się rubygems (2.1.0). Spróbuj zmienić referencję gemfile na: "gem" simple_form ", github: 'plataformatec/simple_form'" i aktualizowanie działającego gem'a – mwalsher