controller内でrenderを使用したいのですが、renderを差し込んでも移動されないで処理が進む。
色々調べてみても自分みたいなケースになってる方がいなかったので質問させていただきます。
動かないのは if params[:building].nil?の箇所でrender :newが動いていないという状態です。
ifの中までは入っているのは確認しました。
renderが動作しない原因わかる方がいましたら宜しくお願いします。
controller
1 def create 2 @item = Item.new(item_params) 3 if params[:building].nil? 4 flash[:alert] = "小カテゴリーを一つ以上選択してください。" 5 render :new 6 end 7 respond_to do |format| 8 if @item.save 9 @small = params[:building][:small_category_ids] 10 for i in 0..@small.length do 11 @category = CategoriesItem.new(item_id: @item.id, 12 big_category_id: params[:item][:big_category_id].to_i, 13 small_category_id: @small[i].to_i) 14 unless @category.save 15 flash[:alert] = '商品の作成に失敗しました。' 16 format.html { render :new } 17 format.json { render json: @item.errors, status: :unprocessable_entity } 18 end 19 end 20 format.html { redirect_to @item, notice: '商品の作成に成功しました。' } 21 format.json { render :show, status: :created, location: @item } 22 else 23 flash[:alert] = '商品の作成に失敗しました。' 24 format.html { render :new } 25 format.json { render json: @item.errors, status: :unprocessable_entity } 26 end 27 end 28 end
error
1AbstractController::DoubleRenderError (Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".):
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/28 08:09