回答編集履歴
2
スペルミスを修正
test
CHANGED
@@ -30,7 +30,7 @@
|
|
30
30
|
|
31
31
|
@user = User.find(params[:id])
|
32
32
|
|
33
|
-
@user.attributes = user_prams
|
33
|
+
@user.attributes = user_params
|
34
34
|
|
35
35
|
|
36
36
|
|
1
confirmを考慮したコードに修正しました
test
CHANGED
@@ -1,4 +1,20 @@
|
|
1
|
-
|
1
|
+
私のやり方になりますが、
|
2
|
+
|
3
|
+
edit -> confirm -> updateの順に画面遷移します。
|
4
|
+
|
5
|
+
保存はconfirmで行い、updateはあくまでも表示のみ行う。
|
6
|
+
|
7
|
+
という前提のコードです。
|
8
|
+
|
9
|
+
|
10
|
+
|
11
|
+
editのPOST先はconfirmにします。
|
12
|
+
|
13
|
+
confirmのPOST先もconfirmとします。
|
14
|
+
|
15
|
+
confirmのビューには、backとsaveのボタンがあるとします。
|
16
|
+
|
17
|
+
|
2
18
|
|
3
19
|
```ruby
|
4
20
|
|
@@ -10,11 +26,15 @@
|
|
10
26
|
|
11
27
|
|
12
28
|
|
13
|
-
def
|
29
|
+
def confirm
|
14
30
|
|
15
31
|
@user = User.find(params[:id])
|
16
32
|
|
33
|
+
@user.attributes = user_prams
|
17
34
|
|
35
|
+
|
36
|
+
|
37
|
+
# 戻るときはエラーチェックしない
|
18
38
|
|
19
39
|
if params[:back]
|
20
40
|
|
@@ -26,11 +46,7 @@
|
|
26
46
|
|
27
47
|
|
28
48
|
|
29
|
-
# フォームの内容をセットし、エラーをチェック
|
30
|
-
|
31
49
|
# エラーがあれば編集画面へ戻す
|
32
|
-
|
33
|
-
@user.attributes = user_prams
|
34
50
|
|
35
51
|
unless @user.valid?
|
36
52
|
|
@@ -42,17 +58,41 @@
|
|
42
58
|
|
43
59
|
|
44
60
|
|
45
|
-
|
61
|
+
if params[:save]
|
46
62
|
|
47
|
-
|
63
|
+
if @user.save
|
48
64
|
|
65
|
+
# updateへリダイレクト
|
66
|
+
|
67
|
+
# リダイレクトするのは、F5などでブラウザのリロードで
|
68
|
+
|
69
|
+
# 保存処理が二重に動かないようにするため
|
70
|
+
|
71
|
+
redirect_to :update
|
72
|
+
|
73
|
+
else
|
74
|
+
|
75
|
+
# DBへの保存に失敗
|
76
|
+
|
77
|
+
# 編集画面へ戻す
|
78
|
+
|
49
|
-
|
79
|
+
render :edit
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
50
84
|
|
51
85
|
|
52
86
|
|
53
|
-
|
87
|
+
# 特にやることなし
|
54
88
|
|
89
|
+
# ビューで完了しましたなどのメッセージを書いておけばOK
|
90
|
+
|
55
|
-
|
91
|
+
def update
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
|
56
96
|
|
57
97
|
end
|
58
98
|
|