質問編集履歴

3

より具体的な質問に修正。

2020/10/28 02:17

投稿

kema
kema

スコア6

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_attached :image
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

質問の拡張子の記述ミスの修正です。

2020/10/28 02:17

投稿

kema
kema

スコア6

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

文章がわかりにくかったので修正しました。

2020/10/27 23:36

投稿

kema
kema

スコア6

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