Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

プルダウン検索で該当する情報を表示させたい

Q&A

Closed

解決したいこと

・プルダウン検索で該当する情報を表示させたい
・2つの異なるDBから情報を取り出して表示させたい、その方法を知りたい

発生している問題・エラー

2つの異なるDBから該当する情報を取り出す方法がわからない。

自分で試したこと

[やりたいこと]
①この動画のように、プルダウンでカテゴリーを選択する
https://gyazo.com/8054ab406249df496efbb5ebb758a092
②選択したカテゴリーに属する情報を「want」「item」テーブルのそれぞれから取り出して、リスト化させる
(具体的にいうと、 「want」と「item」テーブルの情報を反映させた「classification」のビューに、①で選択したカテゴリーに該当する情報を「want」と「item」テーブルから取り出し表示させたいと考えています。)

問題は、「want」と「item」で選択できるカテゴリー名は同様ですが、カテゴリー名を保存するカラム名が異なっていることにあります。
(例えば、「want」ではcategori_id、「item」ではcategory_idです。)


  self.data = [
    { id: 1, name: '--' },
    { id: 2, name: '野菜' },
    { id: 3, name: '果物' },
    { id: 4, name: '魚' },
    { id: 5, name: '肉' },
    { id: 6, name: '惣菜' },
    { id: 7, name: '乳製品' },
    { id: 8, name: '調味料' },
    { id: 9, name: 'アイス' },
    { id: 10, name: '冷凍食品' },
    { id: 11, name: 'お菓子' },
    { id: 12, name: '加工食品' },
    { id: 13, name: 'パン類' },
    { id: 14, name: 'その他' }
  ]

https://qiita.com/AKI3/items/0a47f9536413b4436389
上記の記事を参考に、プルダウンで選択した情報を取得する方法はわかりました。しかし、この記事から、2つの異なるDBから該当する情報を取り出し表示する方法への応用の仕方がわからず、苦戦しています。

app/controllers/classification_controller.rb
class ClassificationsController < ApplicationController
  before_action :search_category, only: [:index, :search]

  def index 
    @user = current_user
    @items = @user.items
    @wants = @user.wants
  end


  def search
    @results= @classification.result
  end

  def show
  end

  private

  def search_category
    @classification= Classification.ransack(params[:q])
   # 検索オブジェクトを生成
  end

end

https://qiita.com/AKI3/items/0a47f9536413b4436389
この記事を参考にしてコントローラーのコードを書きました。

app/views/classifications/index.html.erb
 <div class="search-data">
      <h3>商品検索</h3>
      <%= search_form_for @classification, url: classifications_search_path do |f| %> 
        <%= f.label :category_id, '商品検索' %>
        <%= f.collection_select :category_id, Category.all, :id, :name %>
        <%= f.submit '検索' %>
      <% end %>
      <br>
       <%= search_form_for @classification, url: classifications_search_path do |f| %>
         <%= f.label :categori_id, '商品検索' %>
         <%= f.collection_select :categori_id, Categori.all, :id, :name %>
         <%= f.submit '検索' %>
      <% end %> 
    </div>

*app/views/classifications/index.html.erbの4~5行目と10~11行目で、カテゴリー名のカラムを書くところがありますが、「want」と「item」テーブルそれぞれでカラム名が違うので、どのように書いたら良いか戸惑っています。カラム名が違うので2つの検索フォームを用意しなければならないのでしょうか。

app/views/classifications/show.html.erb
<h1>検索結果</h1>
<% if @results.present? %>
  <% @results.each do |result| %>
    <td>
    <br>
    <li>
      <%= result.thing %>
      <%= result.category.name %>
    </li>
  <% end %>
<% else %>
  該当する商品はありません
<% end %>

上記のapp/views/classifications/show.html.erbは、結果を表示するviewです。カテゴリーを選択し、該当する情報を@resultsに格納して、上記のように表示させたいと考えています。
こちらのコードも、https://qiita.com/AKI3/items/0a47f9536413b4436389 を参考に書きました。

足らない情報とわかりにくい説明だと思いますが、ここまで読んでいただきありがとうございます。解決させたいので、ぜひ力をお貸しいただきたいです。お願いします!

0

No Answers yet.

Your answer might help someone💌