5

В прошлом я использовал рельсы 3.x bootstrap 2.x и simple_form с большим успехом. Однако я попытался создать новое (не обновленное) приложение Rails 4/Bootstrap 3 и хотя синтаксис simple_form можно использовать и даже использовать вложенные формы, похоже, что стиль не работает. Я использовал рельсы-bootstrap-формы в форме, не основанной на модели, и что стиль выглядит отлично, однако я бы предпочел использовать simple_form для большинства моих форм.Rails 4, Bootstrap 3, simple_form - стиль не работает

Мои файлы выглядеть следующим образом

жемчужину

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"; 

У меня есть два инициализаторы, которые не были изменены simple_form.rb и simple_form_bootstrap. rb

и вид, похожий на следующий

<%= 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 %> 

, который выводит следующим образом

 <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> 

В частности флажками выглядят очень плохо, как показано ниже

enter image description here

Кто-нибудь имел какие-либо подобные проблемы, или я просто что-то немного тупое?

любые мысли с благодарностью принял

+0

Вы запустили 'rails generate simple_form: install --bootstrap'? – pragma

+0

Да, да. Теперь я пытаюсь выполнить следующие изменения в моем файле gem: gem 'simple_form', '~> 3.1.0.rc1', github: 'plataformatec/simple_form', branch: 'master' –

ответ

2

Похоже, версия по умолчанию simple_form не полностью работает с Bootstrap 3. Поэтому я должен был изменить свой файл драгоценного камня, чтобы прочитать следующее:

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

Это решило проблему, когда я перезапустил инициализатору и перезапустить приложение.

3

Вы правы относительно версии в Gemfile, и я обнаружил, что формы делает лучше с этим синтаксисом:

<%= 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 %> 

Вы также можете посмотреть на пример кода приложения:

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

+0

Спасибо за дополнительную деталь Fred, очень полезный наконечник. И да, теперь, когда все работает, я вернусь и посмотрю пример приложения –

Смежные вопросы