teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

8

追記内容の編集

2019/09/30 06:01

投稿

Arly3
Arly3

スコア5

title CHANGED
File without changes
body CHANGED
@@ -4,8 +4,11 @@
4
4
 
5
5
  発生している問題・エラーメッセージ
6
6
  ---
7
- 現在ログイン処理の機能を作っていて、ログイン失敗時にrenderメソッドを用いてログイン画面に戻そうと考えているのですがビュー<%= @error_message %>が表示されず困っています。
7
+ 現在ログイン処理の機能を作っていて、ログイン失敗時にrenderメソッドを用いてログイン画面に戻そうと考えているのですがビュー<%= @error_message %>が表示されず困っています。
8
+ 現在の状況としてはelse文は実行されているのですが、画面が何も変わらない状態です。
9
+
8
- ```UsersController
10
+ **UsersControllerの内容**
11
+ ```Rails
9
12
  def login_form
10
13
  end
11
14
 
@@ -19,36 +22,7 @@
19
22
  end
20
23
  end
21
24
  ```
22
-
23
- ```Terminal
24
- Started POST "/login" for 160.193.244.225 at 2019-09-27 10:15:00 +0000
25
- Cannot render console from 160.193.244.225! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
26
- (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
27
- ↳ /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
28
- Processing by UsersController#login as JS
29
- Parameters: {"utf8"=>"✓", "authenticity_token"=>"kJG1HfR+lZHw08RVVek5KZkH8mPGGumjJ9kxsnpfKb0JtH0mK1KeHgVzIBy/CYIPN7OweZLqDMcdnDxxukAldw==", "name"=>"test", "password"=>"[FILTERED]", "commit"=>"Save "}
30
- User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."name" = ? AND "users"."password" = ? LIMIT ? [["name", "test"], ["password", "xxx@example.com"], ["LIMIT", 1]]
31
- ↳ app/controllers/users_controller.rb:68
32
- Rendering users/login_form.html.erb within layouts/application
33
- Rendered users/login_form.html.erb within layouts/application (4.2ms)
34
- Completed 200 OK in 268ms (Views: 257.8ms | ActiveRecord: 0.5ms)
35
- ```
36
- 試したこと
37
- ---
38
- else以下の処理が行われているか確かめるために
39
-
40
- else
41
- @error_message = "メールアドレスまたはパスワードが間違っています"
42
- redirect_to login_url
43
- end
44
-
45
- に書き換えて試したりしましたが、同じようにビューの中の<%= @error_message %>は表示されませんでした。何らかの原因で
46
- @error_message = "~~~"
47
- の文が機能してないと思うのですが力が及ばず解決しないので質問させていただきます。
48
-
49
- 追記
50
- ---
51
- viewのソースコードの追加依頼を頂いたので追加させていただきます。
25
+ **viewのソースコード**
52
26
  ```Rails
53
27
  <h1>ログインフォーム</h1>
54
28
 
@@ -70,31 +44,6 @@
70
44
  <%= f.submit class:"btn btn-primary" %>
71
45
  <% end %>
72
46
  ```
73
-
74
- 追記2
75
- ---
76
- 編集依頼を頂きましたので追記させていただきます。
77
-
78
- **@error_message = "メールアドレスまたはパスワードが間違っています"以下に
79
- raise "else文に処理が到達している: @error_message -> #{@error_message}"
80
- を追加した場合の実行結果**
81
-
82
- ```Terminal
83
- Started POST "/login" for 160.193.244.225 at 2019-09-28 08:39:50 +0000
84
- Cannot render console from 160.193.244.225! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
85
- Processing by UsersController#login as JS
86
- Parameters: {"utf8"=>"✓", "authenticity_token"=>"kinthFQKFz4MYmh2kgkRpg4EpN/My3QlUs3G006IFtQLDCW/iyYcsfnCjD946aqAoLDmxZg7kUFoiMsQjpcaHg==", "name"=>"test", "password"=>"[FILTERED]", "commit"=>"Save "}
87
- User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."name" = ? AND "users"."password" = ? LIMIT ? [["name", "test"], ["password", "xxx@example.com"], ["LIMIT", 1]]
88
- ↳ app/controllers/users_controller.rb:68
89
- Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.1ms)
90
-
91
-
92
-
93
- RuntimeError (else文に処理が到達している: @error_message -> メールアドレスまたはパスワードが間違っています):
94
-
95
- app/controllers/users_controller.rb:74:in `login'
96
- ```
97
-
98
47
  **$ bundle exec rake routesの実行結果**
99
48
  ```Terminal
100
49
  $ bundle exec rake routes
@@ -132,17 +81,50 @@
132
81
  rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create
133
82
  ```
134
83
 
135
- 追記3
84
+
85
+ **実行結果**
86
+ ```Terminal
87
+ Started POST "/login" for 160.193.244.225 at 2019-09-27 10:15:00 +0000
88
+ Cannot render console from 160.193.244.225! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
89
+ (0.1ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC
90
+ ↳ /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
91
+ Processing by UsersController#login as JS
92
+ Parameters: {"utf8"=>"✓", "authenticity_token"=>"kJG1HfR+lZHw08RVVek5KZkH8mPGGumjJ9kxsnpfKb0JtH0mK1KeHgVzIBy/CYIPN7OweZLqDMcdnDxxukAldw==", "name"=>"test", "password"=>"[FILTERED]", "commit"=>"Save "}
93
+ User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."name" = ? AND "users"."password" = ? LIMIT ? [["name", "test"], ["password", "xxx@example.com"], ["LIMIT", 1]]
94
+ ↳ app/controllers/users_controller.rb:68
95
+ Rendering users/login_form.html.erb within layouts/application
96
+ Rendered users/login_form.html.erb within layouts/application (4.2ms)
97
+ Completed 200 OK in 268ms (Views: 257.8ms | ActiveRecord: 0.5ms)
98
+ ```
99
+
100
+
101
+ 試したこと
136
102
  ---
103
+ **コントローラー内のelse文中の@error_message = "メールアドレスまたはパスワードが間違っています"以下に
137
- renderメソッドが期待通り動作してるかテストするためにroutes.rbに以下を追加しました。
104
+ raise "else文処理が到達して: @error_message -> #{@error_message}"
105
+ を追加した場合の実行結果**
138
106
 
107
+ ```Terminal
108
+ Started POST "/login" for 160.193.244.225 at 2019-09-28 08:39:50 +0000
109
+ Cannot render console from 160.193.244.225! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
110
+ Processing by UsersController#login as JS
111
+ Parameters: {"utf8"=>"✓", "authenticity_token"=>"kinthFQKFz4MYmh2kgkRpg4EpN/My3QlUs3G006IFtQLDCW/iyYcsfnCjD946aqAoLDmxZg7kUFoiMsQjpcaHg==", "name"=>"test", "password"=>"[FILTERED]", "commit"=>"Save "}
112
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."name" = ? AND "users"."password" = ? LIMIT ? [["name", "test"], ["password", "xxx@example.com"], ["LIMIT", 1]]
113
+ ↳ app/controllers/users_controller.rb:68
114
+ Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.1ms)
115
+
116
+
117
+
118
+ RuntimeError (else文に処理が到達している: @error_message -> メールアドレスまたはパスワードが間違っています):
119
+
120
+ app/controllers/users_controller.rb:74:in `login'
121
+ ```
122
+ **renderメソッドが期待通りに動作してるかの確認**
123
+ ルーティングとコントローラとviewに一時的に以下の文を追加し、renderメソッドが動作してるか確認を行いました。
139
124
  ```RubyOnRails
140
125
  get "debag" => "users#debag"
141
126
  post "test" => "users#test"
142
127
  ```
143
-
144
- またusers_controllerに以下のコードを追加しました。
145
-
146
128
  ```RubyOnRails
147
129
  def debag
148
130
  end
@@ -156,19 +138,21 @@
156
138
  end
157
139
  end
158
140
  ```
159
-
160
- debag.html.erbの中身は以下のようになっています。
161
141
  ```RubyOnRails
162
142
  <% @test = 1 %>
163
143
  <%= link_to("ログインフォーム", test_url, method: :post) %>
164
144
  ```
145
+ これらの文を追加した上でリンクに飛んだ結果、ログインフォーム内のエラーメッセージは問題なく表示されました。
165
146
 
166
- 状態でリンクに飛んだところ、renderメソッドは期待通りにlogin_formのビューを表示し、エラーメッセージも表示されました。
147
+ 原因考察
148
+ ---
167
- 何らかの理由でdef login内のrenderだけ上手く機能してないように思われます。
149
+ else文の処理は行われ@error_messageも問題なく代入されていることから、何らかの原因でdef login内のrenderメソッドが上手く機能してないものと思われますが力が及ばず解決しないので質問させていただきます
168
150
 
169
- 追記4
151
+ 追記
170
152
  ---
171
- デバッを行いましたので、実行結果を追加させて頂きます。
153
+ デバッを行いましたので、実行結果を追加させて頂きます。
154
+
155
+ **viewの中の<% if @error_message %> の次の行に、 <% raise "if文に処理が到達している: @error_message -> #{@error_message}" %>を追加した場合**
172
156
  ```Terminal
173
157
  ActionView::Template::Error (if文に処理が到達している: @error_message -> メールアドレスまたはパスワードが間違っています):
174
158
  1: <h1>ログインフォーム</h1>

7

デバッグの実行結果の追加

2019/09/30 06:01

投稿

Arly3
Arly3

スコア5

title CHANGED
File without changes
body CHANGED
@@ -164,4 +164,21 @@
164
164
  ```
165
165
 
166
166
  この状態でリンクに飛んだところ、renderメソッドは期待通りにlogin_formのビューを表示し、エラーメッセージも表示されました。
167
- 何らかの理由でdef login内のrenderだけ上手く機能してないように思われます。
167
+ 何らかの理由でdef login内のrenderだけ上手く機能してないように思われます。
168
+
169
+ 追記4
170
+ ---
171
+ デバックを行いましたので、実行結果を追加させて頂きます。
172
+ ```Terminal
173
+ ActionView::Template::Error (if文に処理が到達している: @error_message -> メールアドレスまたはパスワードが間違っています):
174
+ 1: <h1>ログインフォーム</h1>
175
+ 2:
176
+ 3: <% if @error_message %>
177
+ 4: <% raise "if文に処理が到達している: @error_message -> #{@error_message}" %>
178
+ 5: <div class="form-error">
179
+ 6: <%= @error_message %>
180
+ 7: </div>
181
+
182
+ app/views/users/login_form.html.erb:4:in `_app_views_users_login_form_html_erb___3908330072755420838_12276440'
183
+ app/controllers/users_controller.rb:76:in `login'
184
+ ```

6

renderメソッドの動作確認

2019/09/30 04:46

投稿

Arly3
Arly3

スコア5

title CHANGED
File without changes
body CHANGED
@@ -163,4 +163,5 @@
163
163
  <%= link_to("ログインフォーム", test_url, method: :post) %>
164
164
  ```
165
165
 
166
- この状態でリンクに飛んだところ、renderメソッドは期待通りにlogin_formのビューを表示し、エラーメッセージも表示されました。
166
+ この状態でリンクに飛んだところ、renderメソッドは期待通りにlogin_formのビューを表示し、エラーメッセージも表示されました。
167
+ 何らかの理由でdef login内のrenderだけ上手く機能してないように思われます。

5

renderメソッドの動作確認

2019/09/29 06:44

投稿

Arly3
Arly3

スコア5

title CHANGED
File without changes
body CHANGED
@@ -130,4 +130,37 @@
130
130
  rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show
131
131
  update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update
132
132
  rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create
133
- ```
133
+ ```
134
+
135
+ 追記3
136
+ ---
137
+ renderメソッドが期待通りに動作してるかテストするためにroutes.rbに以下を追加しました。
138
+
139
+ ```RubyOnRails
140
+ get "debag" => "users#debag"
141
+ post "test" => "users#test"
142
+ ```
143
+
144
+ またusers_controllerに以下のコードを追加しました。
145
+
146
+ ```RubyOnRails
147
+ def debag
148
+ end
149
+
150
+ def test
151
+ if @test == 2
152
+ redirect_to :index
153
+ else
154
+ @error_message = "メールアドレスまたはパスワードが間違っています"
155
+ render :login_form
156
+ end
157
+ end
158
+ ```
159
+
160
+ debag.html.erbの中身は以下のようになっています。
161
+ ```RubyOnRails
162
+ <% @test = 1 %>
163
+ <%= link_to("ログインフォーム", test_url, method: :post) %>
164
+ ```
165
+
166
+ この状態でリンクに飛んだところ、renderメソッドは期待通りにlogin_formのビューを表示し、エラーメッセージも表示されました。

4

デバッグ及びルーティングの確認

2019/09/29 06:42

投稿

Arly3
Arly3

スコア5

title CHANGED
File without changes
body CHANGED
@@ -69,4 +69,65 @@
69
69
  </div>
70
70
  <%= f.submit class:"btn btn-primary" %>
71
71
  <% end %>
72
+ ```
73
+
74
+ 追記2
75
+ ---
76
+ 編集依頼を頂きましたので追記させていただきます。
77
+
78
+ **@error_message = "メールアドレスまたはパスワードが間違っています"以下に
79
+ raise "else文に処理が到達している: @error_message -> #{@error_message}"
80
+ を追加した場合の実行結果**
81
+
82
+ ```Terminal
83
+ Started POST "/login" for 160.193.244.225 at 2019-09-28 08:39:50 +0000
84
+ Cannot render console from 160.193.244.225! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255
85
+ Processing by UsersController#login as JS
86
+ Parameters: {"utf8"=>"✓", "authenticity_token"=>"kinthFQKFz4MYmh2kgkRpg4EpN/My3QlUs3G006IFtQLDCW/iyYcsfnCjD946aqAoLDmxZg7kUFoiMsQjpcaHg==", "name"=>"test", "password"=>"[FILTERED]", "commit"=>"Save "}
87
+ User Load (0.1ms) SELECT "users".* FROM "users" WHERE "users"."name" = ? AND "users"."password" = ? LIMIT ? [["name", "test"], ["password", "xxx@example.com"], ["LIMIT", 1]]
88
+ ↳ app/controllers/users_controller.rb:68
89
+ Completed 500 Internal Server Error in 1ms (ActiveRecord: 0.1ms)
90
+
91
+
92
+
93
+ RuntimeError (else文に処理が到達している: @error_message -> メールアドレスまたはパスワードが間違っています):
94
+
95
+ app/controllers/users_controller.rb:74:in `login'
96
+ ```
97
+
98
+ **$ bundle exec rake routesの実行結果**
99
+ ```Terminal
100
+ $ bundle exec rake routes
101
+ Prefix Verb URI Pattern Controller#Action
102
+ items GET /items(.:format) items#index
103
+ POST /items(.:format) items#create
104
+ new_item GET /items/new(.:format) items#new
105
+ edit_item GET /items/:id/edit(.:format) items#edit
106
+ item GET /items/:id(.:format) items#show
107
+ PATCH /items/:id(.:format) items#update
108
+ PUT /items/:id(.:format) items#update
109
+ DELETE /items/:id(.:format) items#destroy
110
+ posts GET /posts(.:format) posts#index
111
+ POST /posts(.:format) posts#create
112
+ new_post GET /posts/new(.:format) posts#new
113
+ edit_post GET /posts/:id/edit(.:format) posts#edit
114
+ post GET /posts/:id(.:format) posts#show
115
+ PATCH /posts/:id(.:format) posts#update
116
+ PUT /posts/:id(.:format) posts#update
117
+ DELETE /posts/:id(.:format) posts#destroy
118
+ users GET /users(.:format) users#index
119
+ POST /users(.:format) users#create
120
+ new_user GET /users/new(.:format) users#new
121
+ edit_user GET /users/:id/edit(.:format) users#edit
122
+ user GET /users/:id(.:format) users#show
123
+ PATCH /users/:id(.:format) users#update
124
+ PUT /users/:id(.:format) users#update
125
+ DELETE /users/:id(.:format) users#destroy
126
+ login GET /login(.:format) users#login_form
127
+ POST /login(.:format) users#login
128
+ rails_service_blob GET /rails/active_storage/blobs/:signed_id/*filename(.:format) active_storage/blobs#show
129
+ rails_blob_representation GET /rails/active_storage/representations/:signed_blob_id/:variation_key/*filename(.:format) active_storage/representations#show
130
+ rails_disk_service GET /rails/active_storage/disk/:encoded_key/*filename(.:format) active_storage/disk#show
131
+ update_rails_disk_service PUT /rails/active_storage/disk/:encoded_token(.:format) active_storage/disk#update
132
+ rails_direct_uploads POST /rails/active_storage/direct_uploads(.:format) active_storage/direct_uploads#create
72
133
  ```

3

viewのソースコードの追加

2019/09/28 08:56

投稿

Arly3
Arly3

スコア5

title CHANGED
File without changes
body CHANGED
@@ -52,8 +52,6 @@
52
52
  ```Rails
53
53
  <h1>ログインフォーム</h1>
54
54
 
55
- <%= @error_message %>
56
-
57
55
  <% if @error_message %>
58
56
  <div class="form-error">
59
57
  <%= @error_message %>

2

viewのソースコードの追加

2019/09/28 07:38

投稿

Arly3
Arly3

スコア5

title CHANGED
File without changes
body CHANGED
@@ -50,9 +50,25 @@
50
50
  ---
51
51
  viewのソースコードの追加依頼を頂いたので追加させていただきます。
52
52
  ```Rails
53
+ <h1>ログインフォーム</h1>
54
+
55
+ <%= @error_message %>
56
+
53
57
  <% if @error_message %>
54
58
  <div class="form-error">
55
59
  <%= @error_message %>
56
60
  </div>
57
61
  <% end %>
62
+
63
+ <%= form_with url: login_url do |f| %>
64
+ <div class="form-group">
65
+ <%= f.label :name %>
66
+ <%= f.text_field :name, class:"form-control" %>
67
+ </div>
68
+ <div class="form-group">
69
+ <%= f.label :password %>
70
+ <%= f.text_field :password, class:"form-control" %>
71
+ </div>
72
+ <%= f.submit class:"btn btn-primary" %>
73
+ <% end %>
58
74
  ```

1

viewのソースコードの追加

2019/09/28 07:21

投稿

Arly3
Arly3

スコア5

title CHANGED
File without changes
body CHANGED
@@ -44,4 +44,15 @@
44
44
 
45
45
  に書き換えて試したりしましたが、同じようにビューの中の<%= @error_message %>は表示されませんでした。何らかの原因で
46
46
  @error_message = "~~~"
47
- の文が機能してないと思うのですが力が及ばず解決しないので質問させていただきます。
47
+ の文が機能してないと思うのですが力が及ばず解決しないので質問させていただきます。
48
+
49
+ 追記
50
+ ---
51
+ viewのソースコードの追加依頼を頂いたので追加させていただきます。
52
+ ```Rails
53
+ <% if @error_message %>
54
+ <div class="form-error">
55
+ <%= @error_message %>
56
+ </div>
57
+ <% end %>
58
+ ```