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

回答編集履歴

1

追記

2021/02/07 04:27

投稿

winterboum
winterboum

スコア23654

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