質問編集履歴

1

内容の修正

2018/11/15 06:29

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- rails ransackを使って検索機能を作成したい
1
+ rails ransackを使ってradioボタンの検索機能を作成したい
test CHANGED
@@ -1,48 +1,38 @@
1
1
  # ransackを使って検索機能を作成したい
2
2
 
3
- ransackという検索系のgemを使って検索フォームを実装したかった。
3
+ ransackという検索系のgemを使って検索フォームを実装したのだが、
4
+
5
+ 以下のラジオボタンでの検索を実装したかった。
6
+
7
+
8
+
9
+ ## 例
10
+
11
+ ・0円
12
+
13
+ ・1000円以下
14
+
15
+ ・5000円以下
16
+
17
+ ・10000以上
18
+
19
+
20
+
21
+ このような条件でradioボタンでの検索をしたい。
4
22
 
5
23
 
6
24
 
7
25
  ## コード
8
26
 
9
- table
27
+ controller
10
28
 
11
29
  ```
12
30
 
13
- articleテーブル
14
-
15
- name
16
-
17
- text
18
-
19
- title
20
-
21
-
22
-
23
- tagテーブル
24
-
25
- name
26
-
27
-
28
-
29
- article_tagsテーブル
30
-
31
- tag_id
32
-
33
- article_id
34
-
35
- ```
36
-
37
- controller(article)
38
-
39
- ```
40
-
41
- class ArticleController < ApplicationController
31
+ class PriceController < ApplicationController
42
32
 
43
33
  def index
44
34
 
45
- @search = Article.ransack(params[:q])
35
+ @search = Price.ransack(params[:q])
46
36
 
47
37
  @result = @search.result(distinct: true)
48
38
 
@@ -52,26 +42,98 @@
52
42
 
53
43
 
54
44
 
45
+ slim
46
+
47
+ ```
48
+
49
+ = search_form_for @search, url: search_index_path do |f|
50
+
51
+ div
52
+
53
+ = f.radio_button :price_eq, "", checked: true
54
+
55
+ | 0円
56
+
57
+ div
58
+
59
+ = f.radio_button :price_eq, ""
60
+
55
- ## やりたいこと
61
+ | 1000円以下
62
+
63
+ div
64
+
65
+ = f.radio_button :price_eq, ""
66
+
67
+ | 5000円以下
68
+
69
+ div
70
+
71
+ = f.radio_button :price_eq, ""
72
+
73
+ | 10000円以上
74
+
75
+ ```
76
+
77
+
78
+
79
+ このコードでエラーなく表示まではできる。
80
+
81
+ が、これだと検索が効かない
82
+
83
+
56
84
 
57
85
  slim
58
86
 
59
87
  ```
60
88
 
61
- = search_form_for @search, url: "ここにurlが入ります" do |f|
89
+ = search_form_for @search, url: search_index_path do |f|
62
90
 
63
- = f.label :name_cont, "サンプル"
91
+ div
64
92
 
93
+ = f.radio_button :price_eq, 0, checked: true
94
+
95
+ | 0円
96
+
97
+ div
98
+
65
- = f.text_field :name_cont
99
+ = f.radio_button :price_lteq, 1000
100
+
101
+ | 1000円以下
102
+
103
+ div
104
+
105
+ = f.radio_button :price_lteq, 5000
106
+
107
+ | 5000円以下
108
+
109
+ div
110
+
111
+ = f.radio_button :price_gteq, 10000
112
+
113
+ | 10000円以上
66
114
 
67
115
  ```
68
116
 
69
- このようにして検索はかけられた。
70
117
 
118
+
71
- が、中間テーブル周りtags周りの検索ができない。
119
+ こうすればそれぞれ条件にあった書き方ができてるので
120
+
121
+ 検索も効く。
122
+
123
+ と思ったのですが、
124
+
125
+ :price_eq,:price_lteq,:price_gteqと全て違うものを設定しているため
126
+
127
+ この値がradioボタンのname属性に付与されているせいで
128
+
129
+ それぞれのradioボタンが同じグループと認識されない。
130
+
131
+ そのため以下のように複数選択される形になってしまう。
72
132
 
73
133
 
74
134
 
75
- checkboxでcheckしたタグを持つ記事を検索できるようにしたいが
135
+ ![イメージ説明](f98c1988c0bac395c0c1fc2cfc9d1df6.png)
76
136
 
137
+
138
+
77
- 方がわりません。
139
+ どうすればこの条件を変えずにでますでしょう