質問編集履歴

1

質問追加(ransackでのメソッドを定義する方法)

2020/12/24 15:24

投稿

shogohori1988
shogohori1988

スコア0

test CHANGED
File without changes
test CHANGED
@@ -153,3 +153,105 @@
153
153
 
154
154
 
155
155
  ```
156
+
157
+
158
+
159
+ ## 追記(2020/12/24)
160
+
161
+ DBの相談テーブルのchild_age(年齢)、child_moon_age(月齢)をカラムを削除し、child_age_moon_age(月齢の累積)として管理することとしました。出入力に関しては年齢、月齢を分けるために相談モデル(app/models/consultation.rb)に``attr_accessor :age, :moon_age``追加しました。
162
+
163
+ しかし、ransackで``:age, :moon_age``メソッドを定義する方法がわかりません。
164
+
165
+ どのようにすれば定義できるのか教えていただきたく、何卒お願いします。
166
+
167
+
168
+
169
+ 【ビュー】
170
+
171
+ ```slim
172
+
173
+ = search_form_for @q do |f|
174
+
175
+ .
176
+
177
+ .
178
+
179
+ .form-inline
180
+
181
+ .col
182
+
183
+ = f.label :age, '年齢:'
184
+
185
+ .col
186
+
187
+ = f.select :age_gteq , options_for_select((0..3).to_a), { include_blank: '選択'}, class: 'selectpicker form-control'
188
+
189
+ | 歳
190
+
191
+ .form-inline
192
+
193
+ .col
194
+
195
+ = f.label :moon_age, '月齢:'
196
+
197
+ .col
198
+
199
+ = f.select :moon_age_gteq, options_for_select((0..11).to_a), { include_blank: '選択'}, class: 'selectpicker form-control'
200
+
201
+ | ヶ月
202
+
203
+ | 〜
204
+
205
+ .form-inline
206
+
207
+ .col
208
+
209
+ = f.label :age, '年齢:'
210
+
211
+ .col
212
+
213
+ = f.select :age_lteq, options_for_select((0..3).to_a), { include_blank: '選択'}, class: 'selectpicker form-control'
214
+
215
+ | 歳
216
+
217
+ .form-inline
218
+
219
+ .col
220
+
221
+ = f.label :moon_age, '月齢:'
222
+
223
+ .col
224
+
225
+ = f.select :moon_age_lteq, options_for_select((0..11).to_a), { include_blank: '選択'}, class: 'selectpicker form-control'
226
+
227
+ .
228
+
229
+ .
230
+
231
+ = f.submit '検索する', class: 'btn btn-primary'
232
+
233
+ ```
234
+
235
+
236
+
237
+ 【エラー】
238
+
239
+ ```
240
+
241
+ ActionView::Template::Error (undefined method `age_gteq' for #<Ransack::Search:0x00007fbf79f8ff80>):
242
+
243
+ 24: .col
244
+
245
+ 25: = f.label :age, '年齢:'
246
+
247
+ 26: .col
248
+
249
+ 27: = f.select :age_gteq , options_for_select((0..3).to_a), { include_blank: '選択'}, class: 'selectpicker form-control'
250
+
251
+ 28: | 歳
252
+
253
+ 29: .form-inline
254
+
255
+ 30: .col
256
+
257
+ ```