質問編集履歴
3
より具体的な質問に修正。
title
CHANGED
File without changes
|
body
CHANGED
@@ -7,23 +7,55 @@
|
|
7
7
|
|
8
8
|
なんとかActionText内のデータを検索することには成功し、表示させることには成功したのですが,挙動が少しおかしいです。
|
9
9
|
|
10
|
+
**エラーの発生条件**
|
11
|
+
- サーバーを再起動した後にトップ画面(URL:localhost:3000)を再読み込み後、検索フォームに何か文字を入力してから検索ボタンを押すと
|
12
|
+
```
|
13
|
+
Showing /Users/masakikengo/projects/tiisana/app/views/posts/search.html.erb where line #6 raised:
|
10
14
|
|
11
|
-
|
15
|
+
undefined method `each' for :search:Symbol
|
12
|
-
- ただその後の検索では問題無く記事の内容は検索できる。
|
13
16
|
|
17
|
+
```
|
14
|
-
|
18
|
+
とエラーが表示される。
|
15
19
|
|
20
|
+
- ただ何も入力せずに検索ボタンだけを押してもエラーは出ずに画面遷移だけ行われ、その後に検索してもエラーは発生しない。
|
21
|
+
|
22
|
+
- エラー発生後に同じ画面を再読み込みするとその後の検索では問題無く記事の内容は検索できるようになる。
|
23
|
+
|
24
|
+
- ログイン状態はエラーの発生には関係がない。
|
25
|
+
|
26
|
+
|
27
|
+
**検索結果を表示するactionのcode**
|
28
|
+
app/controllers/posts_controller.erb
|
16
29
|
```
|
30
|
+
def search
|
17
|
-
|
31
|
+
@posts = Post.search(params[:keyword])
|
32
|
+
end
|
18
33
|
```
|
34
|
+
app/models/post.rb
|
35
|
+
```ここに言語を入力
|
36
|
+
class Post < ApplicationRecord
|
37
|
+
##省略##
|
38
|
+
def self.search(search)
|
39
|
+
if search != ""
|
40
|
+
scope :search, -> (search_param = nil) {
|
41
|
+
return if search_param.blank?
|
42
|
+
joins("INNER JOIN action_text_rich_texts ON action_text_rich_texts.record_id = posts.id AND action_text_rich_texts.record_type = 'Post'")
|
43
|
+
.where("action_text_rich_texts.body LIKE ? OR posts.title LIKE ? ", "%#{search_param}%", "%#{search_param}%")
|
44
|
+
}
|
45
|
+
else
|
46
|
+
Post.all
|
47
|
+
end
|
48
|
+
end
|
49
|
+
```
|
50
|
+
なにぶん初心者なので細かい部分の動きの理解が乏しくて中々自分で調べているだけでは原因にたどり着けませんでした。
|
19
51
|
|
20
|
-
|
21
52
|
### 該当のソースコード
|
22
53
|
app/models/post.rb
|
23
54
|
```
|
24
55
|
class Post < ApplicationRecord
|
25
56
|
has_rich_text :content
|
26
|
-
|
57
|
+
has_one_attac
|
58
|
+
hed :image
|
27
59
|
belongs_to :user
|
28
60
|
has_many :comments
|
29
61
|
|
@@ -161,6 +193,59 @@
|
|
161
193
|
<div class="container" style="margin-bottom:100px;">
|
162
194
|
```
|
163
195
|
|
196
|
+
###追加のコード
|
197
|
+
app/views/layouts/application.html.erb
|
198
|
+
```
|
199
|
+
<body>
|
200
|
+
<nav class="navbar navbar-light navbar-expand-md ">
|
201
|
+
<a class="navbar-brand text-primary",class="h1" href="/">
|
202
|
+
<div class="h3">Tiisana</div>
|
203
|
+
</a>
|
204
|
+
<div class="collapse navbar-collapse">
|
205
|
+
<ul class="navbar-nav ml-auto">
|
206
|
+
<div class="navbar-item d-flex justify-content-end align-items-center">
|
207
|
+
<%= form_with(url: search_posts_path, local: true, method: :get, class: "search-form") do |form| %>
|
208
|
+
<div class="input-group">
|
209
|
+
<%= form.text_field :keyword, class: "search-form navop" %>
|
210
|
+
<%= button_tag sanitize('<i class="fa fa-search"></i>'), :type => "submit",:class =>"btn btn-light mr-1" %>
|
211
|
+
</div>
|
212
|
+
</div>
|
213
|
+
<% end %>
|
214
|
+
|
215
|
+
<% if user_signed_in? %>
|
216
|
+
<li class="nav-item mr-2 ">
|
217
|
+
<%= link_to "新規投稿", new_post_path, class: "nav-alink btn btn-light " %>
|
218
|
+
</li>
|
219
|
+
<li class="nav-item dropdown">
|
220
|
+
<div class="btn-group">
|
221
|
+
<button class="nav-alink btn btn-light dropdown-toggle" data-toggle="dropdown" href="/" aria-haspopup="true" aria-expanded="false"><%= current_user.nickname %>
|
222
|
+
</button>
|
223
|
+
<div class="dropdown-menu dropdown-menu-right">
|
224
|
+
<%= link_to "マイページ", "/users/#{current_user.id}", class: "dropdown-item", type:"button"%>
|
225
|
+
<%= link_to "ログアウト", destroy_user_session_path, method: :delete, class:"dropdown-item", type:"button"%>
|
226
|
+
</div>
|
227
|
+
</div>
|
228
|
+
<ul>
|
229
|
+
</li>
|
230
|
+
<% else %>
|
231
|
+
<li class="nav-item mr-2">
|
232
|
+
<%= link_to "ログイン", new_user_session_path, class: "nav-alink btn btn-light" %>
|
233
|
+
<%= link_to "新規登録", new_user_registration_path, class: "nav-alink btn btn-light"%>
|
234
|
+
</li>
|
235
|
+
</ul>
|
236
|
+
<% end %>
|
237
|
+
</div>
|
238
|
+
</nav>
|
239
|
+
<%= yield %>
|
240
|
+
<nav class="navbar bg-light navbar-light navbar-expand-md mt-5 fixed-bottom">
|
241
|
+
<a class="navbar-brand text-center" href="/">© 2020 Tiisana</a>
|
242
|
+
</nav>
|
243
|
+
|
244
|
+
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
245
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
246
|
+
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
247
|
+
</body>
|
248
|
+
```
|
164
249
|
### 試したこと
|
165
250
|
エラー分の内容的にeach文の中に渡している値がおかしいみたいのなので、ActionTextの内容を表示させる以下の部分を
|
166
251
|
|
2
質問の拡張子の記述ミスの修正です。
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
end
|
47
47
|
|
48
48
|
```
|
49
|
-
app/controllers/posts_controller.
|
49
|
+
app/controllers/posts_controller.erb
|
50
50
|
```
|
51
51
|
class PostsController < ApplicationController
|
52
52
|
before_action :set_post, only: [:show, :edit, :update, :destroy]
|
1
文章がわかりにくかったので修正しました。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
ActionTextで投稿した記事を検索し、テキストの部分だけ表示させ
|
1
|
+
ActionTextで投稿した記事を検索し、テキストの部分だけ表示させたい。しかし何故か一回目の検索時にだけエラーが出てしまいます。
|
body
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
ActionTextを使用して投稿した記事
|
3
|
+
ActionTextを使用して投稿した記事の検索をして文章だけを一覧表示したい。
|
4
|
+
今回は検索の結果をBootstrapのCard機能をしようして一覧表示にしたいので、画像のデータがあるとレイアウトが崩れてしまいます。
|
4
5
|
|
5
|
-
|
6
6
|
### 発生している問題・エラーメッセージ
|
7
7
|
|
8
8
|
なんとかActionText内のデータを検索することには成功し、表示させることには成功したのですが,挙動が少しおかしいです。
|
@@ -12,7 +12,7 @@
|
|
12
12
|
- ただその後の検索では問題無く記事の内容は検索できる。
|
13
13
|
|
14
14
|
なにぶん初心者なので細かい部分の動きの理解が乏しくて中々自分で調べているだけでは原因にたどり着けませんでした。
|
15
|
-
|
15
|
+
|
16
16
|
```
|
17
17
|
undefined method `each' for :search:symbol
|
18
18
|
```
|
@@ -174,7 +174,6 @@
|
|
174
174
|
```
|
175
175
|
確かに投稿した内容は全て表示される。
|
176
176
|
|
177
|
-
でも今回は検索の結果をBootstrapのCard機能をしようして一覧表示にしたいので画像のデータがあるとレイアウトが崩れてしまう。
|
178
177
|
|
179
178
|
|
180
179
|
検索機能と検索後に文章だけを抜粋するのは以下のサイトを参考に実装しました。
|