質問するログイン新規登録

質問編集履歴

9

@teacher = Teacher.new が抜けていたので追加しました

2019/08/02 09:54

投稿

KokiOya
KokiOya

スコア27

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)の間違いをただしました

2019/08/02 09:54

投稿

KokiOya
KokiOya

スコア27

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[:id]の結果
96
+ rails cでのplack(:id)の結果
97
97
  ```ここに言語を入力
98
- irb(main):002:0> Place.pluck[:id]
98
+ irb(main):003:0> Place.pluck(:id)
99
- (7.8ms) SELECT "places".* FROM "places"
99
+ (0.4ms) SELECT "places"."id" FROM "places"
100
- Traceback (most recent call last):
101
- 1: from (irb):2
100
+ => [1, 2, 3, 4]
102
- TypeError (no implicit conversion of Symbol into Integer)
103
101
  ```
104
102
 
105
103
  質問がわかりにくく申し訳ありません。ご回答のほどよろしくお願いします。

7

pluck[:id]の結果を追加

2019/08/02 09:51

投稿

KokiOya
KokiOya

スコア27

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を追加しました

2019/08/02 08:06

投稿

KokiOya
KokiOya

スコア27

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

題名を変更しました

2019/08/01 13:33

投稿

KokiOya
KokiOya

スコア27

title CHANGED
@@ -1,1 +1,1 @@
1
- hidden_fieldplace_idsの値を使いたい
1
+ 登録確認画面中間テーブルの値 (place_ids)を使いたい
body CHANGED
File without changes

4

誤字がありました

2019/08/01 13:22

投稿

KokiOya
KokiOya

スコア27

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の内容の更新

2019/08/01 12:21

投稿

KokiOya
KokiOya

スコア27

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の追加

2019/08/01 12:16

投稿

KokiOya
KokiOya

スコア27

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
- <%= f.label :"指導場所" %>
10
+ <%= f.label :"指導場所" %>
10
- <%= f.hidden_field :place_ids %>
11
+ <%= place_f.hidden_field :id %>
11
- <% @teacher.places.each do |place| %>
12
- <p><%= place.name %></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

説明を詳しくしました

2019/08/01 10:49

投稿

KokiOya
KokiOya

スコア27

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