回答編集履歴

2

継承元を勘違いしていました。Devise::SessionsController → Devise::RegistrationsController

2020/01/14 04:45

投稿

shinoharat
shinoharat

スコア1676

test CHANGED
@@ -2,21 +2,17 @@
2
2
 
3
3
 
4
4
 
5
- 継承元の Devise::SessionsController の定義が
5
+ 継承元の Devise::RegistrationsController の定義が
6
6
 
7
7
 
8
8
 
9
9
  ```rb
10
10
 
11
- def new
11
+ # GET /resource/edit
12
12
 
13
- self.resource = resource_class.new(sign_in_params)
13
+ def edit
14
14
 
15
- clean_up_passwords(resource)
16
-
17
- yield resource if block_given?
15
+ render :edit
18
-
19
- respond_with(resource, serialize_options(resource))
20
16
 
21
17
  end
22
18
 
@@ -24,9 +20,7 @@
24
20
 
25
21
 
26
22
 
27
- となっており、最後の respond_with で view のレンダリングを行っています。
28
-
29
- そのため、super の後にインスタンス変数を設定しても、既に view の描画は終わっているため、view に反映されません。
23
+ となっています。そのため、super の後にインスタンス変数を設定しても、既に view の描画は終わっているため、view に反映されません。
30
24
 
31
25
 
32
26
 
@@ -34,19 +28,17 @@
34
28
 
35
29
 
36
30
 
37
- super にブロックを渡しその中でインスタンス変数を定義してください。
31
+ super を使わず書くか
38
32
 
39
33
 
40
34
 
41
35
  ```rb
42
36
 
43
- def new
37
+ # GET /resource/edit
44
38
 
45
- super do |resource|
39
+ def edit
46
40
 
47
- @user = "hoge"
41
+ @user = "hoge"
48
-
49
- end
50
42
 
51
43
  end
52
44
 
@@ -54,4 +46,20 @@
54
46
 
55
47
 
56
48
 
49
+ またはインスタンス変数を定義した後に super を呼び出してください。
50
+
51
+
52
+
53
+ ```rb
54
+
57
- ちなみに、ブロック変数 resource には、作成するモデルのインスタンスが渡されます。
55
+ # GET /resource/edit
56
+
57
+ def edit
58
+
59
+ @user = "hoge"
60
+
61
+ super
62
+
63
+ end
64
+
65
+ ```

1

参考URLを間違えていたので一旦削除

2020/01/14 04:45

投稿

shinoharat
shinoharat

スコア1676

test CHANGED
@@ -55,13 +55,3 @@
55
55
 
56
56
 
57
57
  ちなみに、ブロック変数 resource には、作成するモデルのインスタンスが渡されます。
58
-
59
-
60
-
61
- ## 【参考資料】
62
-
63
-
64
-
65
- devise のコントローラーに追加したインスタンス変数が view で参照できない件の対応メモ
66
-
67
- [https://qiita.com/shinoharat/items/f40157c80d3cc5569140](https://qiita.com/shinoharat/items/f40157c80d3cc5569140)