回答編集履歴

2

タイポ修正

2017/12/26 23:26

投稿

scivola
scivola

スコア2108

test CHANGED
@@ -74,7 +74,7 @@
74
74
 
75
75
  `belong_to` の解説(参考にしたもの)をもう一度よく読んでみてください。
76
76
 
77
- 今の場合,`blogcategory` という単数のメソッドが使えます。
77
+ 今の場合,`blogcategory` という単数のメソッドが使えます。
78
78
 
79
79
 
80
80
 

1

解決法のさわりを追記

2017/12/26 23:26

投稿

scivola
scivola

スコア2108

test CHANGED
@@ -35,3 +35,53 @@
35
35
 
36
36
 
37
37
  `before_action` などで `@blog` をセットしているのでなければ,ここで初めて `@blog` が出てくるのですが,「未定義のインスタンス変数の値は `nil`」というルールがあるので,`nil` の `blogcategories` メソッドを呼び出そうとしていることになるのです。
38
+
39
+
40
+
41
+ (追記)
42
+
43
+
44
+
45
+ エラーの原因は以上ですが,`new` メソッドで最初にやるべきことはおそらく
46
+
47
+
48
+
49
+ ```rb
50
+
51
+ @blog = Blog.new
52
+
53
+ ```
54
+
55
+
56
+
57
+ で空の(フォーム用の)`Blog` オブジェクトを作ることでしょうね。
58
+
59
+
60
+
61
+ で,`Blog` モデルの定義を見ると
62
+
63
+
64
+
65
+ ```rb
66
+
67
+ belongs_to :blogcategory
68
+
69
+ ```
70
+
71
+
72
+
73
+ なので,そもそも `Blog` に `blogcategories` というメソッドはありません。(複数あるはずがありませんよね)
74
+
75
+ `belong_to` の解説(参考にしたもの)をもう一度よく読んでみてください。
76
+
77
+ 今の場合,`blogcategory` という単数系のメソッドが使えます。
78
+
79
+
80
+
81
+ ただ,`new` メソッドで `@blog.blogcategory.build` ってやる必要がよくわかりません。
82
+
83
+
84
+
85
+ また,フォームが入れ子になっているのもよく分かりません。
86
+
87
+ `Blog` のためのフォームなので,カテゴリーを選ぶところは `category_id` の値を `select` させればよいと思うのですが。