2016-06-29 3 views
0

Я использую жемчужину select2-rails и хотел бы получить select2 для работы в моем поле множественного выбора для artist_ids, как в this all-js example. Вот как выглядит мой erb-файл. Добавление скрипта js не создало никакого эффекта, форма все равно загружается одинаково.Вставка множественного выбора select2 в rails 'form_for

<%= form_for @event, url: {action: "create"}, html: {class: "nifty_form"} do |f| %> 
    <%= f.text_field :name %><br /> 
    <%= f.datetime_select :date %><br /> 
    <%= f.text_area :description, size: "60x12" %><br /> 
    <%= f.select(
    :venue_id, 
    options_from_collection_for_select(Venue.all, "id", "name") 
) %> 
    <%= f.collection_select :artist_ids, Artist.all, :id, :name, {:selected => @event.artist_ids, include_blank: true}, {multiple: true} %> 
    <br /> 
    <%= f.submit "Create" %><br /> 

    <% content_for :js do %> 
    <script type="text/javascript"> 
    $(document).ready(function() { 
     $('#event_artist_ids').select2(); 
    }); 
    </script> 
    <% end %> 
<% end %> 

Я следил за всеми обычными процедурами для добавления select2, как указано в документах. Добавлена ​​//= require select2 строка в application.js и *= require select2 с *= require select2-bootstrap в application.scss.

UPDATE:

после Prashant Ravi Даршан предложение, похоже Выбор2 начал работать, хотя и с ошибками. Теперь это два беспорядочных полей для выбора художника

enter image description here

ответ

2

Пожалуйста, попробуйте это

<%= f.select(:artist_ids, Artist.all.collect {|a| [a.name, a.id]}, {}, id: "event_artist_ids", :multiple => true) %> 

<script type="text/javascript"> 
    $("#event_artist_ids").select2(); 
</script> 
+0

эй! который заставил select2 работать, хотя с некоторыми икотами. Я добавил скриншот в OP. любая идея, о чем этот беспорядок? – sivanes

+0

вы можете исправить проблему ширины, указав ширину: 100%, чтобы выбрать тег. –

+1

@sivanes Есть три подхода, которыми вы можете следовать. Я не уверен на 100%, но попробую с ними. 1- удалить html: {class: "nifty_form"} from form_for tag 2 - удалить все js и css из приложения. но содержат только ниже application.css * = require_self * = требуют bootstrap.min * = требуется Выбор2 * = требуется Выбор2-самозагрузки в application.js // = требует JQuery // = требуется jquery_ujs // = требуется bootstrap.min // = require select2 –

1

Кажется, что каждый пример выбор2 работает на Stackoverflow через simple_form_for. Некоторые из них выразили чувство, что form_for не будет работать, потому что select2 не принимает f.select ... Я потратил несколько часов на то, чтобы выяснить, как заставить меня работать, и все темы, которые я открыл, я не помню никого с form_for получения в любом месте, когда люди переключались на simple_form_for, им это удалось.

+0

ничего себе, я думаю, что это хорошо знать. Я по-прежнему новичок в Rails и стараюсь держаться подальше от простой формы с моим первым крупным проектом, так как я слышал, что у него есть собственные проблемы и использование стандартной формы Rails вместо этого помогает понять, как это работает. – sivanes

+1

, с другой стороны, вот рабочий рельс + select2 пример и нет simple_form в gemfile? https://github.com/jseifer/rails-select2-example/blob/master/Gemfile – sivanes

+0

@sivanes Я могу говорить только за то, что я видел на stackoverflow –

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