お世話になっております。
Ruby on Rails(5.2.1)でフォームから同じモデルを一括登録したいと考えています。
現在、ビューもコントローラーも3回ずつ回すようにしているのですが、それぞれきちんと保存されずに困っています。
追記
実現したいことは、入力した選択肢をそれぞれ保存したいと考えています。
例えば、「赤」、「青」、「緑」と入力すれば、3つレコードが追加されるようなイメージです。
エラーなどはありませんが、データベースには格納されていないという状態です。
app/controllers/selections_controller.rb
Ruby
1class SelectionsController < ApplicationController 2 def index 3 end 4 5 def new 6 @title = Title.find(params[:id]) 7 if user_signed_in? 8 @selection = Selection.new 9 else 10 flash[:alert] = "ログインしてください。" 11 redirect_to title_path(id: @title.id) 12 end 13 end 14 15 def create 16 3.times do 17 @selection = Selection.create(create_params) 18 end 19 if @selection.save 20 flash[:success] = "選択肢が追加されました!" 21 redirect_to new_selection_path(id: @selection.title_id) 22 else 23 flash[:alert] = "選択肢の追加に失敗しました。" 24 redirect_to new_selection_path(id: @selection.title_id) 25 end 26 end 27 def create_params 28 params.require(:selection).permit(:id, :name, :image, :title_id) 29 end 30end
app/views/selections/new.html.erb
Ruby
1<% provide(:title, @title.name + 'の選択肢追加') %> 2 <div class="main"> 3 <form> 4 <h2>選択肢を追加する</h2> 5 <%= form_for(@selection) do |f| %> 6 <%= 3.times do %> 7 <div class="selection-item"> 8 <%= f.hidden_field :title_id, value: @title.id %> 9 <div class="field"> 10 <label>選択肢</label> 11 <%= f.text_field :name, placeholder: "例)" %> 12 </div> 13 <div class="field"> 14 <label>選択肢の画像</label> 15 <%= f.file_field :image, :type => "file" %> 16 </div> 17 </div> 18 <% end %> 19 <div class="form-btn"> 20 <%= f.submit "選択肢を追加する" %> 21 </div> 22 <% end %> 23 </form> 24 </div> 25</div>
回答1件
あなたの回答
tips
プレビュー