私はRoRのスキルを向上させるためにこれをやっています。私は自分が作成したフォームをスタイルすることを試みています。これがフォームのオリジナルコードです。フィルタ結果ドロップダウンメニューがRails Bootstrapフォームで機能しないGEM
<%= form_tag('/quotation/tints/generate') do %>
<%= label :manufacturer_id, 'Manufacturer' %>
<div class="field">
<%= collection_select(:tint, :manufacturer_id, Manufacturer.order(:name), :id, :name, {:prompt => "Select Manufacturer" }) %>
</div>
Model:
<div class="field">
<%= grouped_collection_select(:tint, :model_id, Manufacturer.order(:name), :models, :name, :id, :name, {:prompt => "Select Model"}) %>
</div>
<%= label :price_front, 'Front Tint' %>
<div class="field">
<%= collection_select(:price, :price_front, Price.where('catogery_id' => "1").order(:name), :id, :name, {:prompt => "Select Front Tint"}) %>
</div>
<%= label :price_rear, 'Size and Back Tint' %>
<div class="field">
<%= collection_select(:price, :price_rear, Price.where('catogery_id' => "1").order(:name), :id, :name, {:prompt => "Select Side & Rear Tint"}) %>
</div>
<div class="form-group">
<%= submit_tag 'Submit', class: "button btn btn-primary" %>
</div>
<% end %>
ユーザーはModel
を選択するために、第1 Manufacturer
を選択しなければなりません。 Model
はManufacturer
に基づいてフィルタリングされます。これはアクションをアクティブにするために使用するスクリプトです。それは完全に動作します。
jQuery ->
$('#tint_model_id').parent().hide()
models = $('#tint_model_id').html()
$('#tint_manufacturer_id').change ->
manufacturer = $('#tint_manufacturer_id :selected').text()
options = $(models).filter("optgroup[label='#{manufacturer}']").html()
if options
$('#tint_model_id').html(options)
$('#tint_model_id').parent().show()
else
$('#tint_model_id').empty()
$('#tint_model_id').parent().hide()
今、フォームとドロップダウンメニューのスタイルを変更しようとしています。私はbootstrap_form
宝石を使って私の人生を楽にしています。この宝石を使用するには、宝石で作業するためにフォームを変更する必要があります。フォームのコードを以下のコードに変更しました。
<%= bootstrap_form_tag url: '/quotation/tints/generate' do |f| %>
<div class="field">
<%= f.collection_select :manufacturer_id, Manufacturer.order(:name), :id, :name, {:prompt => "Select Manufacturer"} %>
</div>
<div class="field">
<%= f.grouped_collection_select :model_id, Manufacturer.order(:name), :models, :name, :id, :name, {:prompt => "Select Model"} %>
</div>
<div class="field">
<%= f.collection_select :price_front, Price.where('catogery_id' => "1").order(:name), :id, :name, {:prompt => "Select Front Tint"} %>
</div>
<div class="field">
<%= f.collection_select :price_rear, Price.where('catogery_id' => "1").order(:name), :id, :name, {:prompt => "Select Side & Rear Tint"} %>
</div>
<div class="form-group">
<%= submit_tag 'Submit', class: "button btn btn-primary" %>
</div>
<% end %>
フォームは美しく見え、送信後にビューを生成するように機能します。しかし、フィルターオプションはもはや機能しないことがわかりました。ユーザーはManufacturer
を選択する前にModel
を選択できます。私はbundle install
を試して、それを動作させるために私のレールサーバを再起動しました。
私の質問ですbootstrap_form
gemは製造元に基づいてモデルをフィルタリングするスクリプトで動作しますか?ブートストラップCSSで動作するようにスクリプトを移植できる方法はありますか?
詳細情報: は、これは私がapplication.js
//= require jquery
//= require jquery.turbolinks
//= require jquery_ujs
//= require_tree .
//= require bootstrap
のために、私は私が何を意味するか説明するために、以下の画像を追加した持っているものです。
フォームにブートストラップを適用した後、id##tint_model_idが存在しますか?生成されたHTMLタグを見て確認できますか? – sahil
いいえ、 'tint_model_id'から' _model_id'に変更されました –
idが変更されたため、jqueryはもう動作しません。以前と同じようにコレクションを保存し、 'f.'を削除してください。form_tagを使用しているので、違いはありません。 – sahil