回答編集履歴

1

追記

2018/03/25 00:37

投稿

退会済みユーザー
test CHANGED
@@ -63,3 +63,83 @@
63
63
  とするなどしてみるとうまくいくかもしれません。
64
64
 
65
65
  もし上記のように書き換えた場合はViewファイルもcreate_form.html.erbに書き換えてください。
66
+
67
+
68
+
69
+ 追記
70
+
71
+ もう一度見直して自分でもやってみました。
72
+
73
+ 途中name_tと見慣れないカラム名が見えましたがteachersテーブルのカラム名はnameでよろしかったでしょうか?
74
+
75
+ 以下はteachersテーブルのカラム名をnameと前提して行いました。
76
+
77
+
78
+
79
+ Teacher.newでidは自動生成されるのでid: params[:id]は不要でした。
80
+
81
+ おそらくここでidを指定しているにもかかわらず入力が行われないためエラーが出ているのではないでしょうか?
82
+
83
+
84
+
85
+ ```
86
+
87
+ <ルーティング>
88
+
89
+ get 'home/:id' => 'teacher#home'
90
+
91
+ get 'create' => 'teacher#create_form'
92
+
93
+ post 'create' => 'teacher#create'
94
+
95
+ ```
96
+
97
+
98
+
99
+ ```
100
+
101
+ <コントローラ>
102
+
103
+ def home
104
+
105
+ @teacher = Teacher.find_by(id: params[:id])
106
+
107
+ end
108
+
109
+
110
+
111
+ def create_form
112
+
113
+ @teacher = Teacher.new #書かなくても可
114
+
115
+ end
116
+
117
+
118
+
119
+ def create
120
+
121
+ @teacher = Teacher.new(
122
+
123
+ #idは自動生成される
124
+
125
+ name: params[:name]
126
+
127
+ )
128
+
129
+ if @teacher.save
130
+
131
+ redirect_to("/home/#{@teacher.id}")
132
+
133
+ else
134
+
135
+ flash[:notice] = "Please teach us your name."
136
+
137
+ render action: :name
138
+
139
+ end
140
+
141
+ end
142
+
143
+ ```
144
+
145
+ で問題なく動作しました。