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

質問編集履歴

1

内容の修正

2018/11/15 06:29

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- rails ransackを使って検索機能を作成したい
1
+ rails ransackを使ってradioボタンの検索機能を作成したい
body CHANGED
@@ -1,39 +1,70 @@
1
1
  # ransackを使って検索機能を作成したい
2
- ransackという検索系のgemを使って検索フォームを実装したかった。
2
+ ransackという検索系のgemを使って検索フォームを実装したのだが、
3
+ 以下のラジオボタンでの検索を実装したかった。
3
4
 
4
- ## コード
5
+ ##
5
- table
6
- ```
6
+ ・0円
7
- articleテーブル
7
+ ・1000円以下
8
- name
9
- text
10
- title
8
+ ・5000円以下
9
+ ・10000以上
11
10
 
12
- tagテーブル
11
+ このような条件でradioボタンでの検索をしたい。
13
- name
14
12
 
15
- article_tagsテーブル
16
- tag_id
13
+ ## コード
17
- article_id
14
+ controller
18
15
  ```
19
- controller(article)
20
- ```
21
- class ArticleController < ApplicationController
16
+ class PriceController < ApplicationController
22
17
  def index
23
- @search = Article.ransack(params[:q])
18
+ @search = Price.ransack(params[:q])
24
19
  @result = @search.result(distinct: true)
25
20
  end
26
21
  ```
27
22
 
28
- ## やりたいこと
29
23
  slim
30
24
  ```
31
- = search_form_for @search, url: "ここにurlが入ります" do |f|
25
+ = search_form_for @search, url: search_index_path do |f|
26
+ div
27
+ = f.radio_button :price_eq, "", checked: true
28
+ | 0円
29
+ div
32
- = f.label :name_cont, "サンプル"
30
+ = f.radio_button :price_eq, ""
31
+ | 1000円以下
32
+ div
33
- = f.text_field :name_cont
33
+ = f.radio_button :price_eq, ""
34
+ | 5000円以下
35
+ div
36
+ = f.radio_button :price_eq, ""
37
+ | 10000円以上
34
38
  ```
35
- このようにして検索はかけられた。
36
- が、中間テーブル周りのtags周りの検索ができない。
37
39
 
40
+ このコードでエラーなく表示まではできる。
41
+ が、これだと検索が効かない
42
+
43
+ slim
44
+ ```
45
+ = search_form_for @search, url: search_index_path do |f|
46
+ div
47
+ = f.radio_button :price_eq, 0, checked: true
48
+ | 0円
49
+ div
50
+ = f.radio_button :price_lteq, 1000
51
+ | 1000円以下
52
+ div
53
+ = f.radio_button :price_lteq, 5000
54
+ | 5000円以下
55
+ div
56
+ = f.radio_button :price_gteq, 10000
57
+ | 10000円以上
58
+ ```
59
+
60
+ こうすればそれぞれの条件にあった書き方ができてるので
61
+ 検索も効く。
62
+ と思ったのですが、
38
- checkboxでcheckしたタグを持つ記事を検索できるよ
63
+ :price_eq,:price_lteq,:price_gteqと全て違ものを設定るため
64
+ この値がradioボタンのname属性に付与されているせいで
65
+ それぞれのradioボタンが同じグループと認識されない。
66
+ そのため以下のように複数選択される形になってしまう。
67
+
68
+ ![イメージ説明](f98c1988c0bac395c0c1fc2cfc9d1df6.png)
69
+
39
- 方がわかりせん。
70
+ どうすればこの条件を変えずにできますでしょうか?