Sto cercando di integrare bootstrap 3 con simple_forms (dal master).caselle di controllo Bootstrap 3 + simple_forms
In questo momento, ho le seguenti:
config/inizializzatori/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/inizializzatori/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"
Ma l'HTML generato è sbagliato. Bene, è giusto secondo BS2, ma sbagliato in BS3. Eccolo:
<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>
Ma in realtà dovrebbe essere qualcosa di simile:
<div class="checkbox">
<label>
<input type="checkbox"> Check me out
</label>
</div>
E 'probabilmente possibile fissare questa incisione intorno involucri, ma non riesco a farlo funzionare. Qualcuno può darmi qualche consiglio a riguardo?
Acclamazioni
non ha funzionato. Aggiunge ancora la classe 'form-control', che rovina tutto. :/ – caarlos0
Aggiunge una classe "form-control"? Non lo vedo nel tuo inizializzatore ... a meno che tu non intendessi "form-group"? In caso contrario, potrebbe accadere qualcos'altro (forse un input personalizzato?). Assicurati di riavviare il server dopo aver modificato l'inizializzatore simple_form_bootstrap.rb, altrimenti la modifica non avrà effetto. Appena testato di nuovo sul mio capo e funziona bene con "wrapper:: checkbox" nella riga di input. – mwalsher
Ricorda che sto usando anche il ramo master di simple_form (versione 3.0.0) ... è possibile che ci sia stato un cambiamento dalla versione a cui fa riferimento rubygems (2.1.0). Prova a cambiare il tuo riferimento su gemfile a: "gem 'simple_form', github: 'plataformatec/simple_form'" e l'aggiornamento gem corrente – mwalsher