回答編集履歴
1
追記
answer
CHANGED
@@ -4,4 +4,19 @@
|
|
4
4
|
`form_with( model: [@main, @detail], url: page_path, local: true) do |f| %`書くと、f は @detailと結びつきます。@mainは単にURL生成に使われるだけです。
|
5
5
|
そのURLはurl: optionで上書きされるので、結果このviewでは@mainは何の仕事もしていません。
|
6
6
|
text_field_tag を使って @mainの値を管理するか
|
7
|
-
form_with model: @main とし、@detailの方は fields_for を使って記述するかしてください
|
7
|
+
form_with model: @main とし、@detailの方は fields_for を使って記述するかしてください
|
8
|
+
|
9
|
+
追記
|
10
|
+
suginokitech86 さんのこの設計はとても違和感があります。
|
11
|
+
PagesController は モデル Page を扱うという命名です。 Railsの規約では。
|
12
|
+
なのに モデル Main を扱っています。だから view での form_with でややこしい設定が必要になります。
|
13
|
+
敢えてモデルとは違うcontrollerを使うということもありますが、この場合その意味がありますか?
|
14
|
+
|
15
|
+
form_withでも model: [@main, @detail] と階層化する意味があるのか?
|
16
|
+
この記述は @detailを触るときの設定です。@mainも必要なら model: @main とし、@detail は field_forでやるのが Railsの普通だろうと思います。
|
17
|
+
|
18
|
+
PagesController をやめて MainsController にし、form_with model: @main にするというRailsの普通に合わせるともっと楽につくれると思います。作り直しを薦めます。
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
2021/02/07 08:39
|