5

In passato ho utilizzato rails 3.x bootstrap 2.xe simple_form con grande successo. Tuttavia, ho provato a creare una nuova app Rails 4/Bootstrap 3 (e non aggiornata) e sebbene la sintassi simple_form possa essere utilizzata e possa anche usare moduli annidati, sembra che lo stile non funzioni. Ho usato rails-bootstrap-forms su un modulo non basato su modello e quello stile sembra buono, tuttavia, preferirei usare simple_form per la maggior parte dei miei moduli.Rails 4, Bootstrap 3, simple_form - lo stile del modulo non funziona

miei file hanno il seguente

gemma

source 'https://rubygems.org' 

gem 'rails', '4.1.6' 
gem 'mysql2' 
gem 'jquery-rails' 
gem 'devise' 

gem 'sass-rails' 
gem 'coffee-rails', '~> 4.1.0' 
gem 'bootstrap-sass', '~> 3.2.0' 
gem 'autoprefixer-rails' 
gem 'therubyracer', '0.11.4', :platforms => :ruby 
gem 'uglifier', '>= 1.3.0' 
gem 'jquery-ui-rails' 
gem 'less-rails' 
gem 'font-awesome-rails' 
gem 'bootstrap_form' 

gem 'jbuilder', '~> 2.0' 
gem 'sdoc', '~> 0.4.0',   group: :doc 

gem 'jquery-turbolinks' 
gem 'turbolinks', '1.3.0' 

#Forms and user entry 
gem 'simple_form' 
gem 'cocoon' 
gem 'country_select' 
gem "ckeditor" 
gem "gon" 

application.css.scss

/* 
*= require_self 
*= require rails_bootstrap_forms 
*= require font-awesome 
*= require_tree . 
*/ 

@import "bootstrap-sprockets"; 
@import "bootstrap"; 

ho i due inizializzatori che non sono stati alterati simple_form.rb e simple_form_bootstrap. rb

e un modulo simile al seguente

<%= simple_form_for @item, :html => { :class => 'form-horizontal' } do |f| %> 

    <% if f.error_notification %> 
    <div class="alert alert-error fade in"> 
     <a class="close" data-dismiss="alert" href="#">&times;</a> 
     <%= f.error_notification %> 
    </div> 
    <% end %> 

    <%= f.input :user_id, :as => :hidden, :input_html => { :value => @userid } %> 
    <%= f.association :category %> 
    <%= f.input :name %> 
    <%= f.input :description %> 

    <%= f.input :cool %> 
    <%= f.input :cold %> 


    <%= f.button :submit, :class => 'btn-primary' %> 
    <%= link_to t('.cancel', :default => t("helpers.links.cancel")), 
       items_path, :class => 'btn btn-default' %> 
<% end %> 

che emette nel modo seguente

 <div class="control-group hidden item_user_id"><div class="controls"><input class="hidden" id="item_user_id" name="item[user_id]" type="hidden" /></div></div> 
     <div class="control-group select optional item_category"><label class="select optional control-label" for="item_category_id">Category</label><div class="controls"><select class="select optional" id="item_category_id" name="item[category_id]"><option value=""></option> 
<option selected="selected" value="1">Option 1</option> 
<option value="3">Option 2</option> 
<option value="4">Option 3</option> 
     <div class="control-group string optional item_name"><label class="string optional control-label" for="item_name">Name</label><div class="controls"><input class="string optional" id="item_name" name="item[name]" type="text" value="Underwear" /></div></div> 
     <div class="control-group string optional item_description"><label class="string optional control-label" for="item_description">Description</label><div class="controls"><input class="string optional" id="item_description" name="item[description]" type="text" value="test" /></div></div> 
     <div class="control-group boolean optional item_warm"><label class="boolean optional control-label" for="item_warm">Warm</label><div class="controls"><input name="item[warm]" type="hidden" value="0" /><label class="checkbox"><input checked="checked" class="boolean optional" id="item_warm" name="item[warm]" type="checkbox" value="1" /></label></div></div> 
     <div class="control-group boolean optional item_cool"><label class="boolean optional control-label" for="item_cool">Cool</label><div class="controls"><input name="item[cool]" type="hidden" value="0" /><label class="checkbox"><input checked="checked" class="boolean optional" id="item_cool" name="item[cool]" type="checkbox" value="1" /></label></div></div> 

In particolare le caselle sembrano davvero male come illustrato di seguito

enter image description here

Qualcuno ha avuto problemi simili, o sono semplicemente fare qualcosa di un po 'stupido?

qualsiasi pensiero riconoscente accettate

+0

Hai eseguito 'rails generate simple_form: install --bootstrap'? – pragma

+0

Sì, l'ho fatto. Ora sto provando la seguente modifica al mio file gem: gem 'simple_form', '~> 3.1.0.rc1', github: 'plataformatec/simple_form', branch: 'master' –

risposta

2

si presenta come la versione di default di simple_form non è completamente lavorando con Bootstrap 3. Ho dovuto quindi cambiare il mio file di gemma di leggere quanto segue:

gem 'simple_form', '~> 3.1.0.rc1', github: 'plataformatec/simple_form', branch: 'master' 

Questo ha risolto il problema una volta ho reran l'inizializzazione e rimesso in moto l'applicazione.

3

Hai ragione per quanto riguarda la versione nella Gemfile, Inoltre ho trovato che le forme rende meglio con la seguente sintassi:

<%= simple_form_for @item, html: {class: 'form-horizontal'}, 
        wrapper: :horizontal_form, 
        wrapper_mappings: { 
          check_boxes: :horizontal_radio_and_checkboxes, 
          radio_buttons: :horizontal_radio_and_checkboxes, 
          file: :horizontal_file_input, 
          boolean: :horizontal_boolean 
        } do |f| %> 

    <%= f.input :sample_model_field%> 
    <div class="form-group"> 
     <div class="col-sm-offset-3 col-sm-9"> 
     <%= f.button :submit %> 
     </div> 
    </div> 
<% end %> 

Potete anche guardare il codice di esempio app:

https://github.com/rafaelfranca/simple_form-bootstrap

+0

Grazie per il dettaglio extra Fred, davvero utile mancia. E sì, ora che le cose stanno funzionando tornerò indietro e guarderò l'app di esempio –