这是我的控制器方法:
def report1
inicio=Date.strptime(params[:start], "%d/%m/%Y") - 1.days rescue ""
fin=Date.strptime(params[:finish], "%d/%m/%Y") - 1.days rescue ""
@inicio=inicio
@start=params[:start]
@finish=params[:finish]
@topgardenid=params[:topgarden_id]
@projectid=params[:project_id]
params_error=false
if (inicio.blank?)
flash.now[:notice] = 'Fecha inicíal no correcta o no selecionada!'
params_error=true
end
if (fin.blank?)
flash.now[:notice] = 'Fecha final no correcta o no selecionada!'
params_error=true
end
if (params[:topgarden_id].blank?)
flash.now[:notice] = 'Selecionar un Jardin'
params_error=true
end
if (params[:project_id].blank?)
flash.now[:notice] = 'Selecionar un Proyecto'
params_error=true
end
if (!params_error)
#fin=Date.parse(params[:fin]).strftime("%Y-%m-%d") rescue ""
@texts = []
puts "INICIO [#{inicio}] FIN: [#{fin}] PROYECTO[#{params[:project_id]}] JARDÍN[#{params[:topgarden_id]}]"
topgardens=Topgarden.find(params[:topgarden_id])
topgardens.gardens.each do |g|
sms=g.list_riego_dates(params[:start],params[:finish])
if !sms.nil?
sms.each do |s|
@texts << s
end
end
end
end
respond_to do |format|
format.html { render 'index' }
format.xls { headers["Content-Disposition"] = "attachment; filename=\"#{report1}\"" }
end
end
当我使用html格式调用页面时,当我使用此链接时,一切都很好:
<%= link_to "Exportar Excel", report1_path( :project_id => @projectid, :topgarden_id => @topgardenid, :start => @start, :finish => @finish, :format => "xls"), :class =>"vvbutton btn btn-success" %>
我遇到了这个导轨错误:
SystemStackError (stack level too deep):
actionpack (4.1.7) lib/action_dispatch/middleware/reloader.rb:79
似乎该方法被称为无限次,但我无法理解为什么这种情况只是在xls被触发的情况下发生。
在其他控制器上,我以相同的方式使用xls格式,但没有遇到任何问题。
答案 0 :(得分:2)
此行尝试将report1
插入到字符串中。由于report1
是您的方法的名称,因此它会在您收到SystemStackError之前调用它。
format.xls { headers["Content-Disposition"] = "attachment; filename=\"#{report1}\"" }