質問編集履歴

3

記述ミスを修正しました。

2017/11/09 06:39

投稿

pukotan
pukotan

スコア11

test CHANGED
File without changes
test CHANGED
@@ -60,7 +60,7 @@
60
60
 
61
61
  ```
62
62
 
63
- get、assert_templateまではテストが成功するのですが、patchの部分でエラーが出ます。
63
+ getまではテストが成功するのですが、patchの部分でエラーが出ます。
64
64
 
65
65
  でも、コントローラのupdateにdebuggerを挿入してみたところ、paramsはテストで入力した値に変更されており、@user.update_attributes(user_params)もtrueでした。
66
66
 

2

エラーの原因がform_forのルーティングにあることがわかり、Web上ではエラーが出なくなりましたがテストを実行するとエラーが出ます。

2017/11/09 06:39

投稿

pukotan
pukotan

スコア11

test CHANGED
@@ -1 +1 @@
1
- Ruby on RailsでMissingTemplateエラー
1
+ Ruby on RailsでMissingTemplateエラー(form_forのルーティング)
test CHANGED
@@ -1,30 +1,60 @@
1
- Rails初心者です
1
+ 試行錯誤した結果、Web上はエラーが出なくなったのでが、テストを実行すると
2
2
 
3
- MissingTemplateというエラーが出て困っています。
3
+ MissingTemplateというエラーが出ます。
4
-
5
- パスもビューも作成したつもりなのですが、テストがうまくいきません。
6
-
7
- どなたかアドバイスをお願いします。
8
4
 
9
5
 
10
6
 
11
- テス
7
+ コンローラ
8
+
9
+ ```Ruby
10
+
11
+ def edit
12
+
13
+ @user = User.find(params[:user_id])
14
+
15
+ end
16
+
17
+
18
+
19
+ def update
20
+
21
+ @user = User.find(params[:user_id])
22
+
23
+ if @user.update_attributes(user_params)
24
+
25
+ flash[:success] = "登録情報を更新しました"
26
+
27
+ redirect_to @user
28
+
29
+ elsif
30
+
31
+ render edit_user_setting_path(@user)
32
+
33
+ end
34
+
35
+ end
12
36
 
13
37
  ```
14
38
 
39
+ ●テスト
40
+
41
+ ```Ruby
42
+
15
- test "unsuccessful setting edit" do
43
+ test "unsuccessful setting edit" do
44
+
45
+ log_in_as(@user)
16
46
 
17
47
  get edit_user_setting_path(@user)
18
48
 
19
- assert_template :edit
20
-
21
49
  patch user_setting_path(@user), params: { user: { name: "",
22
50
 
23
- email: "foo@invalid",
51
+ email: "foo@invalid",
24
52
 
25
- password: "foo",
53
+ password: "foo",
26
54
 
27
- password_confirmation: "bar" } }
55
+ password_confirmation: "bar" } }
56
+
57
+ assert_redirected_to @user
28
58
 
29
59
  end
30
60
 
@@ -32,7 +62,7 @@
32
62
 
33
63
  get、assert_templateまではテストが成功するのですが、patchの部分でエラーが出ます。
34
64
 
35
- でも、コントローラのupdateにdebuggerを挿入してみたところ、paramsはテストで入力した値に変更されていました。
65
+ でも、コントローラのupdateにdebuggerを挿入してみたところ、paramsはテストで入力した値に変更されており、@user.update_attributes(user_params)もtrueでした。
36
66
 
37
67
 
38
68
 
@@ -40,7 +70,7 @@
40
70
 
41
71
  ```
42
72
 
43
- ActionView::MissingTemplate:
73
+ ActionView::MissingTemplate:
44
74
 
45
75
  ActionView::MissingTemplate: Missing template users/762146111/setting/edit with {:locale=>[:en], :formats=>[:html], :variants=>[], :handlers=>[:raw, :erb, :html, :builder, :ruby, :coffee, :jbuilder]}. Searched in:
46
76
 
@@ -48,9 +78,9 @@
48
78
 
49
79
 
50
80
 
51
- app/controllers/users/settings_controller.rb:12:in `update'
81
+ app/controllers/users/settings_controller.rb:16:in `update'
52
82
 
53
- test/integration/users_edit_test.rb:12:in `block in <class:UsersEditTest>'
83
+ test/integration/users_edit_test.rb:13:in `block in <class:UsersEditTest>'
54
84
 
55
85
  ```
56
86
 
@@ -58,21 +88,21 @@
58
88
 
59
89
  ●ルーティング(config/routes.rb)
60
90
 
61
- ```
91
+ ```Ruby
62
92
 
63
93
  resources :users do
64
94
 
65
95
   resource :setting, only:[ :edit, :update ], controller: 'users/settings'
66
96
 
67
- en
97
+ end
68
98
 
69
99
  ```
70
100
 
71
101
 
72
102
 
73
- ●現状のルーティング(rails routesの結果)
103
+ ●現状のルーティング($ rails routesの結果)
74
104
 
75
- ```
105
+ ```Ruby
76
106
 
77
107
  edit_user_setting GET /users/:user_id/setting/edit(.:format) users/settings#edit
78
108
 
@@ -82,14 +112,86 @@
82
112
 
83
113
  ```
84
114
 
115
+ ●ビュー(app/views/users/settings/edit.html.erb)
116
+
117
+ 以前はWeb上でもエラーが出ていたのですが、上から3行目のurlをusers_pathからuser_setting_pathに修正したところ、Web上ではエラーが出なくなりました。
118
+
85
- ●作成済みのビュー
119
+ ```Ruby
120
+
121
+ <% provide(:title, "ユーザー設定変更") %>
122
+
123
+ <% provide(:button_text, '変更を保存') %>
124
+
125
+ <% provide(:url, user_setting_path) %>
126
+
127
+ <h1>ユーザー登録情報の編集</h1>
128
+
129
+
130
+
131
+ <div class="row">
132
+
133
+ <div class="col-md-6 col-md-offset-3">
134
+
135
+ <%= render 'users/form' %>
136
+
137
+ <div class="gravatar_edit">
138
+
139
+ <%= gravatar_image_tag @user %>
140
+
141
+ <a href="http://gravatar.com/emails" target="_blank" rel="noopener" >変更</a>
142
+
143
+ </div>
144
+
145
+ </div>
146
+
147
+ </div>
86
148
 
87
149
  ```
88
150
 
151
+
152
+
89
- app/views/users/settings/edit.html.erb
153
+ ●ビュー(app/views/users/_form.html.erb
154
+
155
+ ```Ruby
156
+
157
+ <%= form_for(@user, url: yield(:url)) do |f| %>
158
+
159
+ <%= render 'shared/error_messages', object: @user %>
160
+
161
+
162
+
163
+ <%= f.label :name, "名前" %>
164
+
165
+ <%= f.text_field :name, class: 'form-control' %>
166
+
167
+
168
+
169
+ <%= f.label :email, "Eメールアドレス" %>
170
+
171
+ <%= f.email_field :email, class: 'form-control' %>
172
+
173
+
174
+
175
+ <%= f.label :password, "パスワード" %>
176
+
177
+ <%= f.password_field :password, class: 'form-control' %>
178
+
179
+
180
+
181
+ <%= f.label :password_confirmation, "パスワードの確認" %>
182
+
183
+ <%= f.password_field :password_confirmation, class: 'form-control' %>
184
+
185
+
186
+
187
+ <%= f.submit yield(:button_text), class: "btn btn-primary" %>
188
+
189
+ <% end %>
90
190
 
91
191
  ```
92
192
 
93
- もし必要情報が漏れてたら、お手数ご指摘いただけでしょうか
193
+ Web上ではエラーが出ないのにテストエラー出るのはでしょうか
94
194
 
195
+ テストの書き方に問題があるのか、ルーティングがよくないのか、ほかのところに原因があるのか・・・。
196
+
95
- どなたか、アドバイスお願いします!
197
+ どなたかわかる方、お願いします!

1

ビューについての記述を追加しました。

2017/11/09 06:38

投稿

pukotan
pukotan

スコア11

test CHANGED
File without changes
test CHANGED
@@ -82,7 +82,13 @@
82
82
 
83
83
  ```
84
84
 
85
+ ●作成済みのビュー
85
86
 
87
+ ```
88
+
89
+ app/views/users/settings/edit.html.erb
90
+
91
+ ```
86
92
 
87
93
  もし必要な情報が漏れていたら、お手数ですがご指摘いただけないでしょうか。
88
94