概要
前回の記事で、マークアップの共通化を掲載しました
コチラ↓↓
https://qiita.com/kazuko___3o3___/items/019174474f4f258ba19b
実は、この記事がメインでございましたっ
newアクション、editアクション毎に指定したいURLが異なり、最初はif文でコードを書くもエラー続きでした
その解消法を備忘録として残します!
事象
以前、【form_forが自動的に生成してくれるパスは複数形のみ】という記事を書かせていただきました(https://qiita.com/kazuko___3o3___/items/cf8e6966772d629d5927 )
そのため、HTMLは下記のように記載されています。
_form.html.haml
#省略
.new_display
= form_for @task, url: group_tasks_path do |f|
#省略
【group_tasks_path】はnewアクションの時のみに有効で、editアクションではエラーになってしまいます
解決方法
共通ビューに記載されているform_forの箇所を別ファイルに記載します
before
new.html.haml/edit.html.haml
= render "form"
after
new.html.haml
= form_for @task, url: group_tasks_path do |f|
= render partial: "form", locals: {f: f} |= render "new_main"
edit.html.haml
= form_for @task, url: group_task_path do |f|
= render partial: "form", locals: {f: f} |= render "new_main"
上記内容に変更することで、newアクション時には新規登録画面、editアクション時には編集画面(入力されている内容も反映)されるようになり、create、updateもバッチリでした
参考