質問編集履歴

4

自己解決したので、問題個所以外を削除

2015/11/18 09:54

投稿

rails_beginner
rails_beginner

スコア11

test CHANGED
File without changes
test CHANGED
@@ -14,8 +14,6 @@
14
14
 
15
15
  ```
16
16
 
17
-
18
-
19
17
  子テーブル(Son):
20
18
 
21
19
  ```rails
@@ -29,8 +27,6 @@
29
27
  end
30
28
 
31
29
  ```
32
-
33
-
34
30
 
35
31
  このようなテーブル定義で、すでに親テーブルのnameには以下のようにデータが入っているとします。
36
32
 
@@ -48,8 +44,6 @@
48
44
 
49
45
  Couldn't find Parent with ID=1 for Son with ID=
50
46
 
51
-
52
-
53
47
  ```rails
54
48
 
55
49
  def create
@@ -63,8 +57,6 @@
63
57
  if @son.save
64
58
 
65
59
  ```
66
-
67
-
68
60
 
69
61
  Request
70
62
 
@@ -84,51 +76,15 @@
84
76
 
85
77
 
86
78
 
87
-
88
-
89
79
  "parent_attributes"=>{"id"=>"1"}}, というリクエストが贈られているにもかかわらずIDが空白になっているので、Parentのレコードの検索の際にエラーが発生しているのだと思いますが、これ以上は此方で調べてもわかりませんでした。
90
80
 
91
81
  初投稿ですので至らぬ点等あると思います。情報が不足している場合はそのことを書き込んでいただけると助かります。
92
82
 
93
83
 
94
84
 
95
-
96
-
97
85
  以下はモデル、フォーム、コントローラーの抜粋です。
98
86
 
99
-
100
-
101
- # モデル
102
-
103
- parent.rb
104
-
105
- ```rails
106
-
107
- class Parent < ActiveRecord::Base
87
+ **# 追記 フォームに問題があることが分かったので、フォーム以外のコードは削除します。**
108
-
109
- has_many :son
110
-
111
- end
112
-
113
- ```
114
-
115
-
116
-
117
- son.rb
118
-
119
- ```rails
120
-
121
- class Son < ActiveRecord::Base
122
-
123
- belongs_to :parent
124
-
125
- accepts_nested_attributes_for :parent
126
-
127
- end
128
-
129
- ```
130
-
131
-
132
88
 
133
89
 
134
90
 
@@ -165,49 +121,3 @@
165
121
  <% end %>
166
122
 
167
123
  ```
168
-
169
-
170
-
171
-
172
-
173
- # コントローラー
174
-
175
- ```rails
176
-
177
- def new
178
-
179
- @son = Son.new
180
-
181
- @son.build_parent
182
-
183
- end
184
-
185
-
186
-
187
- def update
188
-
189
- respond_to do |format|
190
-
191
- if @son.update(son_params)
192
-
193
- format.html { redirect_to @son, notice: 'Son was successfully updated.' }
194
-
195
- format.json { render :show, status: :ok, location: @son }
196
-
197
- else ...
198
-
199
- end
200
-
201
- end
202
-
203
- end
204
-
205
-
206
-
207
- def son_params
208
-
209
- params.require(:son).permit(:parent_id, :age, parent_attributes: [:id])
210
-
211
- end
212
-
213
- ```

3

自己解決したので、問題個所以外を削除

2015/11/18 09:54

投稿

rails_beginner
rails_beginner

スコア11

test CHANGED
File without changes
test CHANGED
File without changes

2

コードの部分をコードの書式に変換

2015/11/18 09:51

投稿

rails_beginner
rails_beginner

スコア11

test CHANGED
File without changes
test CHANGED
@@ -4,16 +4,22 @@
4
4
 
5
5
  親テーブル(Parent):
6
6
 
7
+ ```rails
8
+
7
9
  create_table :parents do |t|
8
10
 
9
11
  t.string :name
10
12
 
11
13
  end
12
14
 
15
+ ```
16
+
13
17
 
14
18
 
15
19
  子テーブル(Son):
16
20
 
21
+ ```rails
22
+
17
23
  create_table :sons do |t|
18
24
 
19
25
  t.integer :parent_id
@@ -22,6 +28,8 @@
22
28
 
23
29
  end
24
30
 
31
+ ```
32
+
25
33
 
26
34
 
27
35
  このようなテーブル定義で、すでに親テーブルのnameには以下のようにデータが入っているとします。
@@ -42,86 +50,96 @@
42
50
 
43
51
 
44
52
 
53
+ ```rails
54
+
55
+ def create
56
+
57
+ @son = Son.new(son_params) ←エラー個所
58
+
59
+
60
+
61
+ respond_to do |format|
62
+
63
+ if @son.save
64
+
65
+ ```
66
+
67
+
68
+
69
+ Request
70
+
71
+
72
+
73
+ Parameters:
74
+
75
+ {"utf8"=>"✓",
76
+
77
+ "authenticity_token"=>"oCWgVCIkvBazpjEK7cIodJ+UJ/liEaGZZde8G58T7zbzvVno0OyX7sMUgrMQejRmtjRMbrjB2RBDd31vMChRNg==",
78
+
79
+ "son"=>{"age"=>"10",
80
+
81
+ "parent_attributes"=>{"id"=>"1"}},
82
+
83
+ "commit"=>"Create Son"}
84
+
85
+
86
+
87
+
88
+
89
+ "parent_attributes"=>{"id"=>"1"}}, というリクエストが贈られているにもかかわらずIDが空白になっているので、Parentのレコードの検索の際にエラーが発生しているのだと思いますが、これ以上は此方で調べてもわかりませんでした。
90
+
91
+ 初投稿ですので至らぬ点等あると思います。情報が不足している場合はそのことを書き込んでいただけると助かります。
92
+
93
+
94
+
95
+
96
+
97
+ 以下はモデル、フォーム、コントローラーの抜粋です。
98
+
99
+
100
+
101
+ # モデル
102
+
103
+ parent.rb
104
+
105
+ ```rails
106
+
107
+ class Parent < ActiveRecord::Base
108
+
109
+ has_many :son
110
+
111
+ end
112
+
113
+ ```
114
+
115
+
116
+
117
+ son.rb
118
+
119
+ ```rails
120
+
121
+ class Son < ActiveRecord::Base
122
+
123
+ belongs_to :parent
124
+
125
+ accepts_nested_attributes_for :parent
126
+
127
+ end
128
+
129
+ ```
130
+
131
+
132
+
133
+
134
+
135
+ #フォーム
136
+
137
+ ```rails
138
+
139
+ <%= form_for(@son) do |f| %>
140
+
45
141
  ...
46
142
 
47
- def create
48
-
49
- @son = Son.new(son_params) ←エラー個所
50
-
51
-
52
-
53
- respond_to do |format|
54
-
55
- if @son.save
56
-
57
- ...
58
-
59
-
60
-
61
- Request
62
-
63
-
64
-
65
- Parameters:
66
-
67
- {"utf8"=>"✓",
68
-
69
- "authenticity_token"=>"oCWgVCIkvBazpjEK7cIodJ+UJ/liEaGZZde8G58T7zbzvVno0OyX7sMUgrMQejRmtjRMbrjB2RBDd31vMChRNg==",
70
-
71
- "son"=>{"age"=>"10",
72
-
73
- "parent_attributes"=>{"id"=>"1"}},
74
-
75
- "commit"=>"Create Son"}
76
-
77
-
78
-
79
-
80
-
81
- "parent_attributes"=>{"id"=>"1"}}, というリクエストが贈られているにもかかわらずIDが空白になっているので、Parentのレコードの検索の際にエラーが発生しているのだと思いますが、これ以上は此方で調べてもわかりませんでした。
82
-
83
- 初投稿ですので至らぬ点等あると思います。情報が不足している場合はそのことを書き込んでいただけると助かります。
84
-
85
-
86
-
87
-
88
-
89
- 以下はモデル、フォーム、コントローラーの抜粋です。
90
-
91
-
92
-
93
- # モデル
94
-
95
- parent.rb
96
-
97
- class Parent < ActiveRecord::Base
98
-
99
- has_many :son
100
-
101
- end
102
-
103
-
104
-
105
- son.rb
106
-
107
- class Son < ActiveRecord::Base
108
-
109
- belongs_to :parent
110
-
111
- accepts_nested_attributes_for :parent
112
-
113
- end
114
-
115
-
116
-
117
-
118
-
119
- #フォーム
120
-
121
- <%= form_for(@son) do |f| %>
122
-
123
- ...
124
-
125
143
  <div class="field">
126
144
 
127
145
  <%= f.label :age %><br>
@@ -146,12 +164,16 @@
146
164
 
147
165
  <% end %>
148
166
 
167
+ ```
168
+
149
169
 
150
170
 
151
171
 
152
172
 
153
173
  # コントローラー
154
174
 
175
+ ```rails
176
+
155
177
  def new
156
178
 
157
179
  @son = Son.new
@@ -187,3 +209,5 @@
187
209
  params.require(:son).permit(:parent_id, :age, parent_attributes: [:id])
188
210
 
189
211
  end
212
+
213
+ ```

1

タイトルの修正

2015/11/17 05:56

投稿

rails_beginner
rails_beginner

スコア11

test CHANGED
@@ -1 +1 @@
1
- Railsで子のフォームから親を参照するとき、RecordNotFoundエラーが発生する
1
+ Railsで子のフォームから親をcollection_selectで参照するとき、RecordNotFoundエラーが発生する
test CHANGED
@@ -1,3 +1,7 @@
1
+ 子のフォームから親の名前をcollection_selectで探し、parent_idに代入しようと考えています。
2
+
3
+
4
+
1
5
  親テーブル(Parent):
2
6
 
3
7
  create_table :parents do |t|
@@ -26,7 +30,7 @@
26
30
 
27
31
 
28
32
 
29
- の時、子のフォームから親の名前collection_selectで探し、parent_idに代入しよう考えているのですがこの時にRecordNotFoundエラーが発生してしまいます。
33
+ Submitすると、RecordNotFoundエラーが発生してしまいます。
30
34
 
31
35
 
32
36