はじめに
ヘルパーメソッドのform_withを使用して入力フォームを作ろうとしていたところ、NoMethodErrorが出てしまい詰まっていました。
結論
route.rb
においてルーティングを名前空間shops
でグループ分けしていたにもかかわらず、shops
をform_withの引数に渡していなかった。
コード
route.rb
namespace :shops do
resources :posts
---中略---
end
shops/posts_controller.rb
class Shops::PostsController < ApplicationController
--- 中略 ---
def new
@post = Post.new
end
--- 中略 ---
end
shops/post/new.html.erb
<%= form_with model:[:shops,@post], local: true do |f| %>
--- 中略 ---
<div>
<%= f.submit "送信"%>
</div>
<% end %>
resourcesをネストしているときに親モデルを引数に渡すのと同じ感覚です。
参考
https://techracho.bpsinc.jp/ohno/2019_12_10/84349
https://railsdoc.com/page/form_with