rials初心者です。今、Teacher登録確認画面を作っているのですが、確認画面へのデータの受け渡しをhidden_fieldで隠して行おうとすると、中間テーブルを使った値がうまくデータの受け渡しができないためsessionでデータの受け渡しを行おうと思ったのですが、いまいち方法がわかりません。現状は以下の通りです。
確認画面のconfirm.html.erbです
<%= form_for(@teacher) do |f| %> <div class="field"> <%= f.label :"指導場所" %> <%= f.hidden_field :place_ids %> <% @teacher.places.each do |place| %> <p><%= place.name %></p> <% end %> </div> <%= f.submit '投稿画面に戻る', name: 'back' %> <%= f.submit '投稿する' %> <% end %>
登録画面のnew.html.erbです
<%= form_for(@teacher, url: {action: 'confirm'} ) do |f| %> <div class ="field"> <%= f.label :"指導場所" %> <%= f.collection_check_boxes :place_ids, @place, :id, :name ,{include_hidden: false},{multiple: true} %> </div> <%= f.submit "確認画面へ" %> <% end %>
teacher.rbです
class Teacher < ApplicationRecord has_many :teachers_places, foreign_key: 'teacher_id', dependent: :destroy has_many :places, through: :teachers_places, dependent: :destroy validates :place_ids, presence: true end
teacher_controller.rbのconrilmアクションとcreateアクションです
def confirm @place = Place.all @teacher = Teacher.new(teacher_params) if @teacher.valid? render 'confirm' else render 'new' end end def create @teacher = Teacher.new(teacher_params) if params[:back] render 'new' elsif @teacher.save redirect_to teachers_url else render 'new' end end
ご回答のほどよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。