質問編集履歴
9
@teacher = Teacher.new が抜けていたので追加しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -94,6 +94,8 @@
|
|
94
94
|
|
95
95
|
def new
|
96
96
|
|
97
|
+
@teacher = Teacher.new
|
98
|
+
|
97
99
|
@place = Place.all
|
98
100
|
|
99
101
|
@teacher.teachers_places.build
|
8
pluck(:id)の間違いをただしました
test
CHANGED
File without changes
|
test
CHANGED
@@ -188,19 +188,15 @@
|
|
188
188
|
|
189
189
|
|
190
190
|
|
191
|
-
rails cでのplack
|
191
|
+
rails cでのplack(:id)の結果
|
192
|
-
|
192
|
+
|
193
|
-
```ここに言語を入力
|
193
|
+
```ここに言語を入力
|
194
|
-
|
194
|
+
|
195
|
-
irb(main):00
|
195
|
+
irb(main):003:0> Place.pluck(:id)
|
196
|
-
|
196
|
+
|
197
|
-
(
|
197
|
+
(0.4ms) SELECT "places"."id" FROM "places"
|
198
|
-
|
199
|
-
|
198
|
+
|
200
|
-
|
201
|
-
|
199
|
+
=> [1, 2, 3, 4]
|
202
|
-
|
203
|
-
TypeError (no implicit conversion of Symbol into Integer)
|
204
200
|
|
205
201
|
```
|
206
202
|
|
7
pluck[:id]の結果を追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
teacher_controller.rbのconrilmアクションとcreateアクションとStrong Parametersです
|
87
|
+
teacher_controller.rbのnewアクションとconrilmアクションとcreateアクションとStrong Parametersです
|
88
88
|
|
89
89
|
```ここに言語を入力
|
90
90
|
|
@@ -92,6 +92,16 @@
|
|
92
92
|
|
93
93
|
|
94
94
|
|
95
|
+
def new
|
96
|
+
|
97
|
+
@place = Place.all
|
98
|
+
|
99
|
+
@teacher.teachers_places.build
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
|
104
|
+
|
95
105
|
def confirm
|
96
106
|
|
97
107
|
@place = Place.all
|
@@ -178,4 +188,22 @@
|
|
178
188
|
|
179
189
|
|
180
190
|
|
191
|
+
rails cでのplack[:id]の結果
|
192
|
+
|
193
|
+
```ここに言語を入力
|
194
|
+
|
195
|
+
irb(main):002:0> Place.pluck[:id]
|
196
|
+
|
197
|
+
(7.8ms) SELECT "places".* FROM "places"
|
198
|
+
|
199
|
+
Traceback (most recent call last):
|
200
|
+
|
201
|
+
1: from (irb):2
|
202
|
+
|
203
|
+
TypeError (no implicit conversion of Symbol into Integer)
|
204
|
+
|
205
|
+
```
|
206
|
+
|
207
|
+
|
208
|
+
|
181
209
|
質問がわかりにくく申し訳ありません。ご回答のほどよろしくお願いします。
|
6
Strong Parametersを追加しました
test
CHANGED
File without changes
|
test
CHANGED
@@ -84,9 +84,13 @@
|
|
84
84
|
|
85
85
|
|
86
86
|
|
87
|
-
teacher_controller.rbのconrilmアクションとcreateアクションです
|
87
|
+
teacher_controller.rbのconrilmアクションとcreateアクションとStrong Parametersです
|
88
88
|
|
89
89
|
```ここに言語を入力
|
90
|
+
|
91
|
+
class TeachersController < ApplicationController
|
92
|
+
|
93
|
+
|
90
94
|
|
91
95
|
def confirm
|
92
96
|
|
@@ -134,6 +138,22 @@
|
|
134
138
|
|
135
139
|
end
|
136
140
|
|
141
|
+
|
142
|
+
|
143
|
+
private
|
144
|
+
|
145
|
+
|
146
|
+
|
147
|
+
def teacher_params
|
148
|
+
|
149
|
+
params.require(:teacher).permit(places_attributes: [:id], place_ids:[])
|
150
|
+
|
151
|
+
end
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
end
|
156
|
+
|
137
157
|
```
|
138
158
|
|
139
159
|
|
5
題名を変更しました
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
登録確認画面で中間テーブルの値 (place_ids)を使いたい
|
test
CHANGED
File without changes
|
4
誤字がありました
test
CHANGED
File without changes
|
test
CHANGED
@@ -144,7 +144,7 @@
|
|
144
144
|
|
145
145
|
```ここに言語を入力
|
146
146
|
|
147
|
-
"teacher"=>{place_ids"=>["3", "4"]}
|
147
|
+
"teacher"=>{"place_ids"=>["3", "4"]}
|
148
148
|
|
149
149
|
```
|
150
150
|
|
@@ -152,7 +152,7 @@
|
|
152
152
|
|
153
153
|
```ここに言語を入力
|
154
154
|
|
155
|
-
"teacher"=>{places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}}
|
155
|
+
"teacher"=>{"places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}}
|
156
156
|
|
157
157
|
```
|
158
158
|
|
3
teacher.rbの更新 paramsの内容の更新
test
CHANGED
File without changes
|
test
CHANGED
@@ -72,6 +72,8 @@
|
|
72
72
|
|
73
73
|
has_many :places, through: :teachers_places, dependent: :destroy
|
74
74
|
|
75
|
+
accepts_nested_attributes_for :places
|
76
|
+
|
75
77
|
validates :place_ids, presence: true
|
76
78
|
|
77
79
|
end
|
@@ -142,7 +144,7 @@
|
|
142
144
|
|
143
145
|
```ここに言語を入力
|
144
146
|
|
145
|
-
place_ids"=>["3", "4"]
|
147
|
+
"teacher"=>{place_ids"=>["3", "4"]}
|
146
148
|
|
147
149
|
```
|
148
150
|
|
@@ -150,7 +152,7 @@
|
|
150
152
|
|
151
153
|
```ここに言語を入力
|
152
154
|
|
153
|
-
places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}
|
155
|
+
"teacher"=>{places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}}
|
154
156
|
|
155
157
|
```
|
156
158
|
|
2
アクション,viewを更新 アクションに渡っているparamsの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,13 +14,13 @@
|
|
14
14
|
|
15
15
|
<div class="field">
|
16
16
|
|
17
|
-
<%= f.la
|
17
|
+
<%= f.fields_for :places do |place_f| %>
|
18
18
|
|
19
|
-
<%= f.
|
19
|
+
<%= f.label :"指導場所" %>
|
20
20
|
|
21
|
-
<%
|
21
|
+
<%= place_f.hidden_field :id %>
|
22
22
|
|
23
|
-
<p><%= place.name %></p>
|
23
|
+
<p><%= place_f.object.name %></p>
|
24
24
|
|
25
25
|
<% end %>
|
26
26
|
|
@@ -86,7 +86,7 @@
|
|
86
86
|
|
87
87
|
```ここに言語を入力
|
88
88
|
|
89
|
-
def confirm
|
89
|
+
def confirm
|
90
90
|
|
91
91
|
@place = Place.all
|
92
92
|
|
@@ -108,7 +108,11 @@
|
|
108
108
|
|
109
109
|
def create
|
110
110
|
|
111
|
+
@place = Place.all
|
112
|
+
|
111
113
|
@teacher = Teacher.new(teacher_params)
|
114
|
+
|
115
|
+
@teacher.place_ids = params[:teacher][:places_attributes]
|
112
116
|
|
113
117
|
if params[:back]
|
114
118
|
|
@@ -128,7 +132,25 @@
|
|
128
132
|
|
129
133
|
end
|
130
134
|
|
135
|
+
```
|
131
136
|
|
137
|
+
|
138
|
+
|
139
|
+
アクションに渡っているparamsの内容
|
140
|
+
|
141
|
+
confirm
|
142
|
+
|
143
|
+
```ここに言語を入力
|
144
|
+
|
145
|
+
place_ids"=>["3", "4"]
|
146
|
+
|
147
|
+
```
|
148
|
+
|
149
|
+
create
|
150
|
+
|
151
|
+
```ここに言語を入力
|
152
|
+
|
153
|
+
places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}
|
132
154
|
|
133
155
|
```
|
134
156
|
|
1
説明を詳しくしました
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,4 +1,6 @@
|
|
1
|
-
rails初心者です。Teacher登録確認画面を作っています。確認画面の時にhidden_fieldを用いているのですが、place_idsなどの中間テーブルを使った値が使えません。どのようにすればよろしいでしょうか。
|
1
|
+
rails初心者です。Teacher登録確認画面を作っています。確認画面の時にhidden_fieldを用いているのですが、place_idsなどの中間テーブルを使った値が使えず、 validates :place_ids, presence: trueに引っかかり、Teacherを保存することができません。どのようにすればよろしいでしょうか。
|
2
|
+
|
3
|
+
|
2
4
|
|
3
5
|
|
4
6
|
|
@@ -58,6 +60,28 @@
|
|
58
60
|
|
59
61
|
```
|
60
62
|
|
63
|
+
|
64
|
+
|
65
|
+
teacher.rbです
|
66
|
+
|
67
|
+
```ここに言語を入力
|
68
|
+
|
69
|
+
class Teacher < ApplicationRecord
|
70
|
+
|
71
|
+
has_many :teachers_places, foreign_key: 'teacher_id', dependent: :destroy
|
72
|
+
|
73
|
+
has_many :places, through: :teachers_places, dependent: :destroy
|
74
|
+
|
75
|
+
validates :place_ids, presence: true
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
|
80
|
+
|
81
|
+
```
|
82
|
+
|
83
|
+
|
84
|
+
|
61
85
|
teacher_controller.rbのconrilmアクションとcreateアクションです
|
62
86
|
|
63
87
|
```ここに言語を入力
|