Rails 4.1 アプリでは、ハッシュから読み込まれるコレクションの選択があります。select2 ブーストラップ スタイリングを使用したいのですが、機能していないようです。
select2-rails gemを含め、指示に従ってapplication.jsとapplication.cssを更新しました。
gem 'select2-rails'
//= require select2
*= require select2
*= require select2-bootstrap
collection_select は、モデルの定数からロードされます。これは特に問題に関連しているとは思いませんが、誰かに役立つ場合に備えてここに追加しました。
FLASHCARD_TYPE = {"verb" => "Verb Conjugation",
"name" => "Word",
"number" => "Number",
"quiz" => "Quiz"}
レールビュー
<div class="form-group">
<%= f.label :card_type, :class => "col-sm-2 control-label" %>
<div class="col-sm-2">
<%= f.collection_select(:card_type, Flashcard::FLASHCARD_TYPE, :first, :last) %>
</div>
</div>
アプリ/資産/javascripts/application.js
$(document).ready(function(){
$("#flashcard_card_type").select2();
});
レンダリングされた html は select2 JavaScript を示し、select は次のように表示されます。
<div class="form-group">
<label class="col-sm-2 control-label" for="flashcard_card_type">Card type</label>
<div class="col-sm-2">
<select id="flashcard_card_type" name="flashcard[card_type]">
<option value="verb">Verb Conjugation</option>
<option value="name">Word</option>
<option value="number">Number</option>
<option value="quiz">Quiz</option></select>
</div>
</div>
どうすればこれが適切に機能しますか? 実際、クラスを介したすべての選択に対してサイト全体のデフォルトを設定し、個々の ID でスタイルをオーバーライドするオプションも必要です。
これはすべての選択に対してサイト全体で機能すると思いましたが、何もしません。
$(document).ready(function(){
$("select").select2();
});
編集
@Sanの推奨に従って、Javascriptコンソールを確認し、取得しました
Uncaught TypeError: undefined is not a function
これは失敗したコードです
$(document).ready(function(){
$("#flashcard_card_type").select2();
});
EDIT 2 完全な application.js ファイル
//= require jquery
//= require jquery_ujs
//= require bootstrap-sprockets
//= require bootstrap-markdown
//= require select2
//= require_tree .
$(document).ready(function(){
$("#flashcard_card_type").select2();
});
EDIT 3 jQueryは要素OKを見つけています
$(document).ready(function(){
debugger;
console.log($("#flashcard_card_type"))
$("#flashcard_card_type").select2();
});
ログ
[select#flashcard_card_type, context: document, selector: "#flashcard_card_type", jquery: "1.11.1", constructor: function, toArray: function…]
0: select#flashcard_card_type
context: document
length: 1
selector: "#flashcard_card_type"
__proto__: Object[0]
編集 - 私が試したこと
- ターボリンクを取り外した
- ページに JavaScript を追加しました
- キャッシュを削除し、レールを再起動しました
私が見つけたもの
- jQueryはタグを見つけることができます
- select2 ライブラリは、js デバッガーのネットワーク タブから読み込まれます。
何か案は?