質問編集履歴
3
より具体的な質問に修正。
test
CHANGED
File without changes
|
test
CHANGED
@@ -16,28 +16,90 @@
|
|
16
16
|
|
17
17
|
|
18
18
|
|
19
|
-
|
19
|
+
**エラーの発生条件**
|
20
|
+
|
20
|
-
|
21
|
+
- サーバーを再起動した後にトップ画面(URL:localhost:3000)を再読み込み後、検索フォームに何か文字を入力してから検索ボタンを押すと
|
22
|
+
|
23
|
+
```
|
24
|
+
|
25
|
+
Showing /Users/masakikengo/projects/tiisana/app/views/posts/search.html.erb where line #6 raised:
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
undefined method `each' for :search:Symbol
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
```
|
34
|
+
|
35
|
+
とエラーが表示される。
|
36
|
+
|
37
|
+
|
38
|
+
|
21
|
-
-
|
39
|
+
- ただ何も入力せずに検索ボタンだけを押してもエラーは出ずに画面遷移だけ行われ、その後に検索してもエラーは発生しない。
|
22
|
-
|
40
|
+
|
41
|
+
|
42
|
+
|
23
|
-
-
|
43
|
+
- エラー発生後に同じ画面を再読み込みするとその後の検索では問題無く記事の内容は検索できるようになる。
|
44
|
+
|
45
|
+
|
46
|
+
|
24
|
-
|
47
|
+
- ログイン状態はエラーの発生には関係がない。
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
|
25
|
-
|
53
|
+
**検索結果を表示するactionのcode**
|
54
|
+
|
55
|
+
app/controllers/posts_controller.erb
|
56
|
+
|
57
|
+
```
|
58
|
+
|
59
|
+
def search
|
60
|
+
|
61
|
+
@posts = Post.search(params[:keyword])
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
```
|
66
|
+
|
67
|
+
app/models/post.rb
|
68
|
+
|
69
|
+
```ここに言語を入力
|
70
|
+
|
71
|
+
class Post < ApplicationRecord
|
72
|
+
|
73
|
+
##省略##
|
74
|
+
|
75
|
+
def self.search(search)
|
76
|
+
|
77
|
+
if search != ""
|
78
|
+
|
79
|
+
scope :search, -> (search_param = nil) {
|
80
|
+
|
81
|
+
return if search_param.blank?
|
82
|
+
|
83
|
+
joins("INNER JOIN action_text_rich_texts ON action_text_rich_texts.record_id = posts.id AND action_text_rich_texts.record_type = 'Post'")
|
84
|
+
|
85
|
+
.where("action_text_rich_texts.body LIKE ? OR posts.title LIKE ? ", "%#{search_param}%", "%#{search_param}%")
|
86
|
+
|
87
|
+
}
|
88
|
+
|
89
|
+
else
|
90
|
+
|
91
|
+
Post.all
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
```
|
26
98
|
|
27
99
|
なにぶん初心者なので細かい部分の動きの理解が乏しくて中々自分で調べているだけでは原因にたどり着けませんでした。
|
28
100
|
|
29
101
|
|
30
102
|
|
31
|
-
```
|
32
|
-
|
33
|
-
undefined method `each' for :search:symbol
|
34
|
-
|
35
|
-
```
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
103
|
### 該当のソースコード
|
42
104
|
|
43
105
|
app/models/post.rb
|
@@ -48,7 +110,9 @@
|
|
48
110
|
|
49
111
|
has_rich_text :content
|
50
112
|
|
51
|
-
has_one_attac
|
113
|
+
has_one_attac
|
114
|
+
|
115
|
+
hed :image
|
52
116
|
|
53
117
|
belongs_to :user
|
54
118
|
|
@@ -324,6 +388,112 @@
|
|
324
388
|
|
325
389
|
|
326
390
|
|
391
|
+
###追加のコード
|
392
|
+
|
393
|
+
app/views/layouts/application.html.erb
|
394
|
+
|
395
|
+
```
|
396
|
+
|
397
|
+
<body>
|
398
|
+
|
399
|
+
<nav class="navbar navbar-light navbar-expand-md ">
|
400
|
+
|
401
|
+
<a class="navbar-brand text-primary",class="h1" href="/">
|
402
|
+
|
403
|
+
<div class="h3">Tiisana</div>
|
404
|
+
|
405
|
+
</a>
|
406
|
+
|
407
|
+
<div class="collapse navbar-collapse">
|
408
|
+
|
409
|
+
<ul class="navbar-nav ml-auto">
|
410
|
+
|
411
|
+
<div class="navbar-item d-flex justify-content-end align-items-center">
|
412
|
+
|
413
|
+
<%= form_with(url: search_posts_path, local: true, method: :get, class: "search-form") do |form| %>
|
414
|
+
|
415
|
+
<div class="input-group">
|
416
|
+
|
417
|
+
<%= form.text_field :keyword, class: "search-form navop" %>
|
418
|
+
|
419
|
+
<%= button_tag sanitize('<i class="fa fa-search"></i>'), :type => "submit",:class =>"btn btn-light mr-1" %>
|
420
|
+
|
421
|
+
</div>
|
422
|
+
|
423
|
+
</div>
|
424
|
+
|
425
|
+
<% end %>
|
426
|
+
|
427
|
+
|
428
|
+
|
429
|
+
<% if user_signed_in? %>
|
430
|
+
|
431
|
+
<li class="nav-item mr-2 ">
|
432
|
+
|
433
|
+
<%= link_to "新規投稿", new_post_path, class: "nav-alink btn btn-light " %>
|
434
|
+
|
435
|
+
</li>
|
436
|
+
|
437
|
+
<li class="nav-item dropdown">
|
438
|
+
|
439
|
+
<div class="btn-group">
|
440
|
+
|
441
|
+
<button class="nav-alink btn btn-light dropdown-toggle" data-toggle="dropdown" href="/" aria-haspopup="true" aria-expanded="false"><%= current_user.nickname %>
|
442
|
+
|
443
|
+
</button>
|
444
|
+
|
445
|
+
<div class="dropdown-menu dropdown-menu-right">
|
446
|
+
|
447
|
+
<%= link_to "マイページ", "/users/#{current_user.id}", class: "dropdown-item", type:"button"%>
|
448
|
+
|
449
|
+
<%= link_to "ログアウト", destroy_user_session_path, method: :delete, class:"dropdown-item", type:"button"%>
|
450
|
+
|
451
|
+
</div>
|
452
|
+
|
453
|
+
</div>
|
454
|
+
|
455
|
+
<ul>
|
456
|
+
|
457
|
+
</li>
|
458
|
+
|
459
|
+
<% else %>
|
460
|
+
|
461
|
+
<li class="nav-item mr-2">
|
462
|
+
|
463
|
+
<%= link_to "ログイン", new_user_session_path, class: "nav-alink btn btn-light" %>
|
464
|
+
|
465
|
+
<%= link_to "新規登録", new_user_registration_path, class: "nav-alink btn btn-light"%>
|
466
|
+
|
467
|
+
</li>
|
468
|
+
|
469
|
+
</ul>
|
470
|
+
|
471
|
+
<% end %>
|
472
|
+
|
473
|
+
</div>
|
474
|
+
|
475
|
+
</nav>
|
476
|
+
|
477
|
+
<%= yield %>
|
478
|
+
|
479
|
+
<nav class="navbar bg-light navbar-light navbar-expand-md mt-5 fixed-bottom">
|
480
|
+
|
481
|
+
<a class="navbar-brand text-center" href="/">© 2020 Tiisana</a>
|
482
|
+
|
483
|
+
</nav>
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
488
|
+
|
489
|
+
<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>
|
490
|
+
|
491
|
+
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
492
|
+
|
493
|
+
</body>
|
494
|
+
|
495
|
+
```
|
496
|
+
|
327
497
|
### 試したこと
|
328
498
|
|
329
499
|
エラー分の内容的にeach文の中に渡している値がおかしいみたいのなので、ActionTextの内容を表示させる以下の部分を
|
2
質問の拡張子の記述ミスの修正です。
test
CHANGED
File without changes
|
test
CHANGED
@@ -94,7 +94,7 @@
|
|
94
94
|
|
95
95
|
```
|
96
96
|
|
97
|
-
app/controllers/posts_controller.rb
|
97
|
+
app/controllers/posts_controller.erb
|
98
98
|
|
99
99
|
```
|
100
100
|
|
1
文章がわかりにくかったので修正しました。
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ActionTextで投稿した記事を検索し、テキストの部分だけ表示させ
|
1
|
+
ActionTextで投稿した記事を検索し、テキストの部分だけ表示させたい。しかし何故か一回目の検索時にだけエラーが出てしまいます。
|
test
CHANGED
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
|
4
4
|
|
5
|
-
ActionTextを使用して投稿した記事
|
5
|
+
ActionTextを使用して投稿した記事の検索をして文章だけを一覧表示したい。
|
6
|
+
|
6
|
-
|
7
|
+
今回は検索の結果をBootstrapのCard機能をしようして一覧表示にしたいので、画像のデータがあるとレイアウトが崩れてしまいます。
|
7
|
-
|
8
8
|
|
9
9
|
|
10
10
|
|
@@ -26,7 +26,7 @@
|
|
26
26
|
|
27
27
|
なにぶん初心者なので細かい部分の動きの理解が乏しくて中々自分で調べているだけでは原因にたどり着けませんでした。
|
28
28
|
|
29
|
-
|
29
|
+
|
30
30
|
|
31
31
|
```
|
32
32
|
|
@@ -350,8 +350,6 @@
|
|
350
350
|
|
351
351
|
|
352
352
|
|
353
|
-
でも今回は検索の結果をBootstrapのCard機能をしようして一覧表示にしたいので画像のデータがあるとレイアウトが崩れてしまう。
|
354
|
-
|
355
353
|
|
356
354
|
|
357
355
|
|