質問編集履歴

1

これは検索機能のためのものなので、検索部分も追記しました。

2020/08/21 08:04

投稿

popomarudasi
popomarudasi

スコア20

test CHANGED
File without changes
test CHANGED
@@ -65,3 +65,101 @@
65
65
  rbファイルになにか記述できたりしないかなと調べたのですが、見つからなかったのでこちらで質問させていただいてます。
66
66
 
67
67
  皆さん年齢ってどうやって登録させてますか?
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ ----追記----
80
+
81
+
82
+
83
+ ageカラムは検索項目のために追加したカラムなのですが、
84
+
85
+ もしageカラム無しで、年齢検索するとしたら、どのような記述でできますでしょうか?
86
+
87
+
88
+
89
+
90
+
91
+ ```ここに言語を入力
92
+
93
+ user.rb
94
+
95
+
96
+
97
+ class User < ApplicationRecord
98
+
99
+
100
+
101
+ scope :search, -> (search_params) do
102
+
103
+ return if search_params.blank?
104
+
105
+
106
+
107
+ birthday_from(search_params[:birthday_from])
108
+
109
+ .birthday_to(search_params[:birthday_to])
110
+
111
+ end
112
+
113
+  scope :birthday_from, -> (from) { where('? <= birthday', from) if from.present? }
114
+
115
+  scope :birthday_to, -> (to) { where('birthday <= ?', to) if to.present? }
116
+
117
+
118
+
119
+ end
120
+
121
+ ```
122
+
123
+
124
+
125
+ ```ここに言語を入力
126
+
127
+ users コントローラ
128
+
129
+
130
+
131
+ #users 検索 ストロングパラメータ
132
+
133
+ def user_search_params
134
+
135
+ params.fetch(:search, {}).permit(:birthday_from, :birthday_to)
136
+
137
+ end
138
+
139
+ ```
140
+
141
+
142
+
143
+ ```ここに言語を入力
144
+
145
+ index.html.erb
146
+
147
+
148
+
149
+ <%= form_with(scope: :search, url: users_path, method: :get) do |f| %><!-- ajax通信 -->
150
+
151
+  <p><%= f.label(:birthday, User.human_attribute_name(:birthday)) %></p>
152
+
153
+  <%= f.date_field :birthday_from, value: @search_params[:birthday_from] %>
154
+
155
+  <br>から<br>
156
+
157
+  <%= f.date_field :birthday_to, value: @search_params[:birthday_to] %>
158
+
159
+  
160
+
161
+  <%= f.submit "検索" %>
162
+
163
+ <% end %>
164
+
165
+ ```