2017-11-22 2 views
2

私は_form.html.erbに2つのDropDown(DropDown1とDropDown2)を持っています。 _form.html.erbのコードはこちらです(援助が必要な場所)。ここでRails。 Dropdown1はRuby on Railsを使ったDrobdown2の選択を可能にします

<div class="input-group"> 
    <%= f.label :flight_id %><br> 
    <%= f.collection_select :flight_id, Flight.all, :id, :airline %> 
    </div> 
    <div class="input-group"> 
    <%= f.label :seat_no %><br> 
    <%= f.text_field :seat_no %> 
    </div> 
    <div class="input-group"> 
    <%= f.label :hotel_id %><br> 
    <%= f.collection_select :hotel_id, Hotel.all, :id, :hotel_name %> 
    </div> 
    <div class="input-group"> 
    <%= f.label :room_no %><br> 
    <%= f.text_field :room_no %> 
</div> 

私はそれぞれFlightHotelに依存seat_noroom_noなどに依存Drop downリストを、変換したいです。 Flightを選択すると、FlightのシートがドロップダウンリストのSeatドロップダウンリストに表示され、同じロジックがRoomドロップダウンリストに表示されます。

ありがとうございます。

答えて

1

ルビーはこれでは不十分です。あなたはあなたが望むものを達成するためにjavascriptを使う必要があります。座席に行きましょう。フライトに応じて座席が積載されることを期待している場合は、最初にfligh_idを受け入れ、JSON形式の座席配列を返すコントローラーアクションを設定する必要があります。私はapp/controllers/ajax/seats_controller.rbでそれを名前空間にこのコントローラを入れて置きます:

class Ajax::SeatsController < ApplicationController 
    def index 
    @seats = Seat.where(fligh_id: params[:flight_id]) 
    render json: @seats 
    end 
end 

routes.rbに:その後、席を書き換える

namespace :ajax do 
    resources :seats_controller, only: :index 
end 

入力よう:

<div class="input-group" style="display: none"> 
    <%= f.label :seat_no %><br> 
    <%= f.text_field :seat_no %> 
</div> 

app/assets/javascripts/[your_controller].js中:

$('#[your_flight_dropdown_html_id]').onchange(function() { 
    $.getJSON('/ajax/seats', { flight_id: $('#[your_flight_dropdown_html_id]').val(), function(data) { 
    // destroy all existing seat options 
    // loop through data and fill in new seat options 
    // Make seats dropdown visible 
    } 
}); 

簡単な説明あなたの仕事にどうやって行けばいいですか?もう1組のドロップダウンでも同じことができます。多分、私のコードにいくつかのバグがあります(テストしていない)が、少なくともあなたは前進する方法を共通に理解するだろう。

助けが必要な場合には、お書きください

+0

これは役に立ちましたか? – AntonTkachov

+0

はい。助けてくれてありがとう..! –

+0

@SattarJamaliあなたは大歓迎です。あなたが将来の訪問者のために有効な回答(左側に緑色のチックマークが付いている)として私の質問をマークするといいですね。事前に感謝します – AntonTkachov

関連する問題