teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記。

2020/10/29 10:09

投稿

bracket_i
bracket_i

スコア193

answer CHANGED
@@ -3,4 +3,62 @@
3
3
  参考:同じくQiitaから。[【rails】チェックボックスを使った検索フォーム](https://qiita.com/igat/items/dc35d42889580026bb4d)
4
4
 
5
5
  - 検索フォームにType(戦型)のチェックボックス作る
6
- - 選択したTypeによるOR検索を実装する
6
+ - 選択したTypeによるOR検索を実装する
7
+
8
+ --------
9
+
10
+ **なんとなくやりたいこと分かってきたので追記です。2020/10/29 19:05**
11
+ **上のことは忘れてください。**
12
+
13
+ #### やりたいこと
14
+ 複数の条件で絞り込み検索を行いたい。
15
+
16
+ ```
17
+ index画面-入力項目
18
+  相手:text_field (現状できてるのはこれだけ)
19
+  結果:プルダウンで選択する
20
+  戦型:プルダウンで選択する
21
+  [検索]
22
+ ```
23
+
24
+ というような画面で検索したい。。。という前提が正しいとして。
25
+
26
+ #### プルダウンメニュー/セレクトボックスの作り方
27
+ [qiita](https://qiita.com/annaaida/items/553b54a465cd60614f95)
28
+
29
+ チェックボックスは作れたということなので参考をもとに作成してください。
30
+
31
+ 結果プルダウン:result
32
+ 戦型プルダウン:type
33
+ とそれぞれ名前つけたとして、
34
+
35
+ app/controllers/kifus_controller.rb
36
+ ```diff
37
+ def search
38
+ - @kifus = Kifu.search(params[:keyword])
39
+ + @kifus = Kifu.search(params)
40
+ end
41
+ ```
42
+ app/models/kifu.rb
43
+ ```diff
44
+ def self.search(search)
45
+ if search != ""
46
+ - Kifu.where('opponent LIKE(?)', "%#{search}%")
47
+ + Kifu.where('opponent LIKE(?)', "%#{search[:keyword]}%").where(result_id: search[:result]).where(type_id: search[:type])
48
+ else
49
+ Kifu.all
50
+ end
51
+ end
52
+ ```
53
+
54
+ といった感じでどうでしょう?
55
+
56
+ #### 質問の主題について
57
+
58
+ > 現在のコードと参考のコードがどう結びつくかが分からなかったです。
59
+
60
+ 複数の条件で検索したい場合は、 `where` メソッドを連結します。
61
+
62
+
63
+ 勘違いして迷走して申し訳なかったです。
64
+ これも間違ってたら目も当てられない。