質問編集履歴

2

コード追加

2018/11/16 08:27

投稿

say4hatii8
say4hatii8

スコア28

test CHANGED
File without changes
test CHANGED
@@ -65,3 +65,147 @@
65
65
  なにかヒントでもおかしい点でもありましたら、ご連絡ください。
66
66
 
67
67
  宜しくお願い致します。
68
+
69
+ -------------------------------------
70
+
71
+ 【コードを追記致しました】
72
+
73
+ scaffoldでnameとpostを作成いたしました。
74
+
75
+ rails g scaffold name name:string age:integer hobby:string
76
+
77
+ rails g scaffold post content:text
78
+
79
+
80
+
81
+ 下記、お答えいただく前のコードです。
82
+
83
+
84
+
85
+ ■nameビューのindex.html.erb
86
+
87
+ 検索フォームと結果表示
88
+
89
+ ```Ruby
90
+
91
+ <%= search_form_for @q do |f| %>
92
+
93
+ <%= f.label :name_or_age_or_hobby_or_posts_content_cont_any, "検索" %>
94
+
95
+ <%= f.search_field :name_or_age_or_hobby_or_posts_content_cont_any %>
96
+
97
+ <%= f.submit "Search" %>
98
+
99
+ <% end %>
100
+
101
+ #thead省略
102
+
103
+ <tbody>
104
+
105
+ <% @names.each do |name| %>
106
+
107
+ <tr>
108
+
109
+ <td><%= name.name %></td>
110
+
111
+ <td><%= name.age %></td>
112
+
113
+ <td><%= name.hobby %></td>
114
+
115
+ <td><%= link_to 'Show', name %></td>
116
+
117
+ <td><%= link_to 'Edit', edit_name_path(name) %></td>
118
+
119
+ <td><%= link_to 'Destroy', name, method: :delete, data: { confirm: 'Are you sure?' } %></td>
120
+
121
+ </tr>
122
+
123
+ <% end %>
124
+
125
+ </tbody>
126
+
127
+ ```
128
+
129
+ ■モデルname.rb
130
+
131
+ ```Ruby
132
+
133
+ class Name < ApplicationRecord
134
+
135
+ has_many :posts
136
+
137
+
138
+
139
+ private
140
+
141
+ ransacker :age do
142
+
143
+ Arel.sql("CAST(names.age AS CHAR(8))")
144
+
145
+ end
146
+
147
+ end
148
+
149
+ ```
150
+
151
+
152
+
153
+ ■モデルpost.rb
154
+
155
+ ```Ruby
156
+
157
+ class Post < ApplicationRecord
158
+
159
+ belongs_to :name
160
+
161
+ end
162
+
163
+ ```
164
+
165
+
166
+
167
+ ■nameコントローラーindexアクション
168
+
169
+ ```Ruby
170
+
171
+ def index
172
+
173
+ if params[:q] == nil #読み込み時処理
174
+
175
+ @q = Name.includes(:posts).ransack(params[:q])
176
+
177
+ @names = @q.result(distinct: true).page(params[:page])
178
+
179
+ else #検索時の処理
180
+
181
+ params[:q][:name_or_age_or_hobby_or_posts_content_cont_any] = params[:q][:name_or_age_or_hobby_or_posts_content_cont_any].split(/[[:space:]]/)
182
+
183
+ #ransack検索
184
+
185
+ @q = Name.includes(:posts).ransack(params[:q])
186
+
187
+ @names = @q.result(distinct: true).page(params[:page])
188
+
189
+ #splitした配列をjoin
190
+
191
+ params[:q][:name_or_age_or_hobby_or_posts_content_cont_any] = params[:q][:name_or_age_or_hobby_or_posts_content_cont_any].join(' ');
192
+
193
+ end
194
+
195
+ end
196
+
197
+ ```
198
+
199
+
200
+
201
+ お答えいただきましたコードを自分なりに、想定されるところに挿入してみたのですが、
202
+
203
+ 良い結果が得られず、頓挫してしまいました。
204
+
205
+
206
+
207
+ お答えいただきましたコードを利用する場合、splitやjoinにも工夫がやはり必要になりますか?
208
+
209
+
210
+
211
+ 大変恐縮でございますが、宜しくお願い致します。

1

質問の詳細不足

2018/11/16 08:27

投稿

say4hatii8
say4hatii8

スコア28

test CHANGED
File without changes
test CHANGED
File without changes