##別モデルのformを同一ページに別々に設置。
今回も、少し苦労したのでメモとして残します。
##説明
categoryモデルと
memo_roomモデルを用意。
■やりたい事
・ページ内でカテゴリの新規追加と
・メモルーム(トークルームみたいな感じ)の作成をするフォームを別々で保存し実装したい。
<p>カテゴリを新規作成する場合はこちらに入力してください。</p>
<%= form_with(model: @category, url: categories_create_path, local: true) do |f| %>
<%= render 'layouts/error_messages', model: f.object %>
<div class="form-group">
<%= f.text_field :title, class: 'form-control', rows: 1, placeholder: "カテゴリ名20文字以内で作成してください" %>
</div>
<%= f.submit 'カテゴリの追加', class: 'btn btn-primary btn-block' %>
<% end %>
<p>既に作成済みの方はカテゴリを選択してください(必須)</p>
<%= form_with(model: @memo_room, local: true) do |f| %>
<%= render 'layouts/error_messages', model: f.object %>
<div class="form-group">
<%= f.collection_select :category_id, Category.all, :id, :title, :include_blank => true %>
</div>
<div class="form-group">
<label for="title">メモルームのタイトルを入力してください。</label><%= f.text_field :title, class: 'form-control', rows: 5, placeholder: "タイトルを20文字以内で入力してください" %>
</div>
<%= f.submit 'ルームを新規作成', class: 'btn btn-primary btn-block' %>
<% end %>
こちらが今回使うform二つのformです。
上がcategoryモデルのformです。
下がmemo_roomのモデルです。
##結論
結果的に何をやったかと言うと。
<%= form_with(model: @category, url: categories_create_path, local: true) do |f| %>
POST /categories(.:format) categories#create
rails routesでまず、categoriesのcreateアクションのpathを調べ。
routes.rbにて post 'categories/create' とデータの送信先を指定しました。
これで、categoryのformはpost 'categories/create'に送信されます。
下のformのmemo_roomはmemo_rooms/createに送信され同じページ内ですが、別々に送信を実装する事が出来ました。
以上!!urlオプション大事ですね!!