質問編集履歴
9
@teacher = Teacher.new が抜けていたので追加しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -46,6 +46,7 @@
|
|
46
46
|
class TeachersController < ApplicationController
|
47
47
|
|
48
48
|
def new
|
49
|
+
@teacher = Teacher.new
|
49
50
|
@place = Place.all
|
50
51
|
@teacher.teachers_places.build
|
51
52
|
end
|
8
pluck(:id)の間違いをただしました
title
CHANGED
File without changes
|
body
CHANGED
@@ -93,13 +93,11 @@
|
|
93
93
|
"teacher"=>{"places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}}
|
94
94
|
```
|
95
95
|
|
96
|
-
rails cでのplack
|
96
|
+
rails cでのplack(:id)の結果
|
97
97
|
```ここに言語を入力
|
98
|
-
irb(main):
|
98
|
+
irb(main):003:0> Place.pluck(:id)
|
99
|
-
(
|
99
|
+
(0.4ms) SELECT "places"."id" FROM "places"
|
100
|
-
Traceback (most recent call last):
|
101
|
-
|
100
|
+
=> [1, 2, 3, 4]
|
102
|
-
TypeError (no implicit conversion of Symbol into Integer)
|
103
101
|
```
|
104
102
|
|
105
103
|
質問がわかりにくく申し訳ありません。ご回答のほどよろしくお願いします。
|
7
pluck[:id]の結果を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -41,10 +41,15 @@
|
|
41
41
|
|
42
42
|
```
|
43
43
|
|
44
|
-
teacher_controller.rbのconrilmアクションとcreateアクションとStrong Parametersです
|
44
|
+
teacher_controller.rbのnewアクションとconrilmアクションとcreateアクションとStrong Parametersです
|
45
45
|
```ここに言語を入力
|
46
46
|
class TeachersController < ApplicationController
|
47
47
|
|
48
|
+
def new
|
49
|
+
@place = Place.all
|
50
|
+
@teacher.teachers_places.build
|
51
|
+
end
|
52
|
+
|
48
53
|
def confirm
|
49
54
|
@place = Place.all
|
50
55
|
@teacher = Teacher.new(teacher_params)
|
@@ -88,4 +93,13 @@
|
|
88
93
|
"teacher"=>{"places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}}
|
89
94
|
```
|
90
95
|
|
96
|
+
rails cでのplack[:id]の結果
|
97
|
+
```ここに言語を入力
|
98
|
+
irb(main):002:0> Place.pluck[:id]
|
99
|
+
(7.8ms) SELECT "places".* FROM "places"
|
100
|
+
Traceback (most recent call last):
|
101
|
+
1: from (irb):2
|
102
|
+
TypeError (no implicit conversion of Symbol into Integer)
|
103
|
+
```
|
104
|
+
|
91
105
|
質問がわかりにくく申し訳ありません。ご回答のほどよろしくお願いします。
|
6
Strong Parametersを追加しました
title
CHANGED
File without changes
|
body
CHANGED
@@ -41,8 +41,10 @@
|
|
41
41
|
|
42
42
|
```
|
43
43
|
|
44
|
-
teacher_controller.rbのconrilmアクションとcreateアクションです
|
44
|
+
teacher_controller.rbのconrilmアクションとcreateアクションとStrong Parametersです
|
45
45
|
```ここに言語を入力
|
46
|
+
class TeachersController < ApplicationController
|
47
|
+
|
46
48
|
def confirm
|
47
49
|
@place = Place.all
|
48
50
|
@teacher = Teacher.new(teacher_params)
|
@@ -66,6 +68,14 @@
|
|
66
68
|
end
|
67
69
|
|
68
70
|
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def teacher_params
|
75
|
+
params.require(:teacher).permit(places_attributes: [:id], place_ids:[])
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
69
79
|
```
|
70
80
|
|
71
81
|
アクションに渡っているparamsの内容
|
5
題名を変更しました
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
|
1
|
+
登録確認画面で中間テーブルの値 (place_ids)を使いたい
|
body
CHANGED
File without changes
|
4
誤字がありました
title
CHANGED
File without changes
|
body
CHANGED
@@ -71,11 +71,11 @@
|
|
71
71
|
アクションに渡っているparamsの内容
|
72
72
|
confirm
|
73
73
|
```ここに言語を入力
|
74
|
-
"teacher"=>{place_ids"=>["3", "4"]}
|
74
|
+
"teacher"=>{"place_ids"=>["3", "4"]}
|
75
75
|
```
|
76
76
|
create
|
77
77
|
```ここに言語を入力
|
78
|
-
"teacher"=>{places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}}
|
78
|
+
"teacher"=>{"places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}}
|
79
79
|
```
|
80
80
|
|
81
81
|
質問がわかりにくく申し訳ありません。ご回答のほどよろしくお願いします。
|
3
teacher.rbの更新 paramsの内容の更新
title
CHANGED
File without changes
|
body
CHANGED
@@ -35,6 +35,7 @@
|
|
35
35
|
class Teacher < ApplicationRecord
|
36
36
|
has_many :teachers_places, foreign_key: 'teacher_id', dependent: :destroy
|
37
37
|
has_many :places, through: :teachers_places, dependent: :destroy
|
38
|
+
accepts_nested_attributes_for :places
|
38
39
|
validates :place_ids, presence: true
|
39
40
|
end
|
40
41
|
|
@@ -70,11 +71,11 @@
|
|
70
71
|
アクションに渡っているparamsの内容
|
71
72
|
confirm
|
72
73
|
```ここに言語を入力
|
73
|
-
place_ids"=>["3", "4"]
|
74
|
+
"teacher"=>{place_ids"=>["3", "4"]}
|
74
75
|
```
|
75
76
|
create
|
76
77
|
```ここに言語を入力
|
77
|
-
places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}
|
78
|
+
"teacher"=>{places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}}
|
78
79
|
```
|
79
80
|
|
80
81
|
質問がわかりにくく申し訳ありません。ご回答のほどよろしくお願いします。
|
2
アクション,viewを更新 アクションに渡っているparamsの追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,10 +6,10 @@
|
|
6
6
|
```
|
7
7
|
<%= form_for(@teacher) do |f| %>
|
8
8
|
<div class="field">
|
9
|
+
<%= f.fields_for :places do |place_f| %>
|
9
|
-
|
10
|
+
<%= f.label :"指導場所" %>
|
10
|
-
|
11
|
+
<%= place_f.hidden_field :id %>
|
11
|
-
<% @teacher.places.each do |place| %>
|
12
|
-
<p><%=
|
12
|
+
<p><%= place_f.object.name %></p>
|
13
13
|
<% end %>
|
14
14
|
</div>
|
15
15
|
<%= f.submit '投稿画面に戻る', name: 'back' %>
|
@@ -42,7 +42,7 @@
|
|
42
42
|
|
43
43
|
teacher_controller.rbのconrilmアクションとcreateアクションです
|
44
44
|
```ここに言語を入力
|
45
|
-
def confirm
|
45
|
+
def confirm
|
46
46
|
@place = Place.all
|
47
47
|
@teacher = Teacher.new(teacher_params)
|
48
48
|
if @teacher.valid?
|
@@ -53,7 +53,9 @@
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def create
|
56
|
+
@place = Place.all
|
56
57
|
@teacher = Teacher.new(teacher_params)
|
58
|
+
@teacher.place_ids = params[:teacher][:places_attributes]
|
57
59
|
if params[:back]
|
58
60
|
render 'new'
|
59
61
|
elsif @teacher.save
|
@@ -63,7 +65,16 @@
|
|
63
65
|
end
|
64
66
|
|
65
67
|
end
|
68
|
+
```
|
66
69
|
|
70
|
+
アクションに渡っているparamsの内容
|
71
|
+
confirm
|
72
|
+
```ここに言語を入力
|
73
|
+
place_ids"=>["3", "4"]
|
67
74
|
```
|
75
|
+
create
|
76
|
+
```ここに言語を入力
|
77
|
+
places_attributes"=>{"0"=>{"id"=>"3"}, "1"=>{"id"=>"4"}}
|
78
|
+
```
|
68
79
|
|
69
80
|
質問がわかりにくく申し訳ありません。ご回答のほどよろしくお願いします。
|
1
説明を詳しくしました
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,5 +1,6 @@
|
|
1
|
-
rails初心者です。Teacher登録確認画面を作っています。確認画面の時にhidden_fieldを用いているのですが、place_idsなどの中間テーブルを使った値が使えません。どのようにすればよろしいでしょうか。
|
1
|
+
rails初心者です。Teacher登録確認画面を作っています。確認画面の時にhidden_fieldを用いているのですが、place_idsなどの中間テーブルを使った値が使えず、 validates :place_ids, presence: trueに引っかかり、Teacherを保存することができません。どのようにすればよろしいでしょうか。
|
2
2
|
|
3
|
+
|
3
4
|
確認画面のconfirm.html.erbです
|
4
5
|
|
5
6
|
```
|
@@ -28,6 +29,17 @@
|
|
28
29
|
<%= f.submit "確認画面へ" %>
|
29
30
|
<% end %>
|
30
31
|
```
|
32
|
+
|
33
|
+
teacher.rbです
|
34
|
+
```ここに言語を入力
|
35
|
+
class Teacher < ApplicationRecord
|
36
|
+
has_many :teachers_places, foreign_key: 'teacher_id', dependent: :destroy
|
37
|
+
has_many :places, through: :teachers_places, dependent: :destroy
|
38
|
+
validates :place_ids, presence: true
|
39
|
+
end
|
40
|
+
|
41
|
+
```
|
42
|
+
|
31
43
|
teacher_controller.rbのconrilmアクションとcreateアクションです
|
32
44
|
```ここに言語を入力
|
33
45
|
def confirm
|