2016-06-21 25 views
0

私は1つまたは複数のレコードを選択できるRailsページを持っています。Rails - このアクションでレンダリングやリダイレクトが複数回呼び出されました

このコントローラのアクションである:私が得る

def addinvtimes 
    @invoice = params[:invtimes][:invoice_id] 
    if params[:event_ids] != nil 
     params[:event_ids].each do |i| 
     newinvtime = Invtime.new(
      linetype_id: 1, 
      invoice_id: @invoice, 
      event_id: i.to_i 
     ) 
     if newinvtime.save 
      respond_to do |format| 
      if newinvtime.save 
       format.html { redirect_to invoice_path(@invoice), :notice => 'Invoice Item was successfully added.' } 
      else 
       format.html { redirect_to invoice_path(@invoice), :notice => 'ERROR.' } 
      end 
      end 
     end 
     end 
    end 
    end 

ありエラーは、次のとおりです。

Render and/or redirect were called multiple times in this action 

どのように私は、リダイレクトを複数回呼び出さないようにコードができますか?

答えて

2

実際の問題は、ダブル/リダイレクトエラーではなくロジックです。 params[:event_ids]に1000個のアイテムが含まれているとします。リダイレクトする必要がある場所はどこですか?

params[:event_ids].each do |i| 
    if something.save 
     redirect_to ..... 
    else 
     redirect_to ..... 
    end 
end 

あなたは、アクションの呼び出し時に一度だけリダイレクトすることができますが、イテレータのeachステップでリダイレクト呼び出そうと、私はあなたがこれを行うことはできませんかなり確信しています。

+0

+1複数のアイテムを一度に更新する場合は、エラーを後で保存し、アイテムごとに更新します(リストやテーブルなど)。 Railsのネストされたリソースを使いやすくなるでしょう。 –

関連する問題