3

さまざまな種類のアリに関する詳細情報を表示する Ant ショー ページがあります。そのページには 2 つのドロップダウンがあり、1 つは環境用: [屋内、屋外]、もう 1 つは食事用: [砂糖、脂肪、タンパク質] です。

それぞれからパラメータを選択すると、パラメータに応じて製品ページが表示されます。ただし、オオアリが屋内の砂糖に関連付けられた製品を持たないなど、一部の組み合わせでは nil が返されます。

組み合わせがゼロかどうかに基づいて、ドロップダウンにデータを入力しようとしています。誰かが屋内を選択した場合、そのコンボが存在しない場合、次のドロップダウンに砂糖が表示されないようにしたいと思います.

これまでのところ、使用可能なアイテムのみの json 配列を作成する 2 つの方法があります。

def food_sources
  food_sources = Ant.find(params[:ant_id]).product_recommendations.where(environment: params[:environment]).map(&:diet)
  render json: food_sources.to_json
end

def environments
  environments = Ant.find(params[:ant_id]).product_recommendations.where(diet: params[:diet]).map(&:environment)
  render json: environments.to_json
end

たとえば、入力の場合

http://localhost:3000/ants/27/food_sources?environment=indoor

それが返すブラウザに

["sugar","protein"]

id が 27 のアリの bc には、屋外での屋内での食事のオプションが 3 つではなく、2 つしかありません。

私の質問は、誰かが上記の組み合わせを選択した場合、この配列を私の Rails ドロップダウンに渡すにはどうすればよいですか?

編集

= form_tag ant_product_recommendations_path(@ant.id), id: 'select_box',  method: :get do |form|
  %h3 What food source are they currently feeding on?
  = select_tag :environment, options_for_select([["Select One"], "Indoor", "Outdoor"])
  %h3 
    Locate the nest by following the ants back from their food source.
    %br
    Where is the nest located?
  = select_tag :diet, options_for_select([["Select One"], "Sugar", "Fat", "Protein"])
  = submit_tag "Find Solutions", class: 'submit button' 
  = link_to 'Go Back', '/', class: 'go_back'
4

1 に答える 1