2016-06-21 1 views
0

У меня есть страница Rails, которая позволяет пользователю выбрать одну или несколько записей.Rails - Render и/или redirect вызывались несколько раз в этом действии

Это действие контроллера:

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. –

Смежные вопросы