Ruby on rails 可以使用axlsx#U rails生成xlsx文件,但可以';当通过POST下载文件时
我正在使用axlsx(使用axlsx\u rails进行模板化) 我的控制器中有:Ruby on rails 可以使用axlsx#U rails生成xlsx文件,但可以';当通过POST下载文件时,ruby-on-rails,angularjs,post,axlsx,Ruby On Rails,Angularjs,Post,Axlsx,我正在使用axlsx(使用axlsx\u rails进行模板化) 我的控制器中有: def listado_publicaciones if params[:publicaciones] @Publicaciones = params[:publicaciones] else @Publicaciones = Proyecto.where("concurso_id","=",@concurso.id).as_json({:include => [
def listado_publicaciones
if params[:publicaciones]
@Publicaciones = params[:publicaciones]
else
@Publicaciones = Proyecto.where("concurso_id","=",@concurso.id).as_json({:include => [:creador => {:only =>[:id],:include =>[:ficha =>{:only =>[:nombres,:apellidos], :methods => [:fullname],:include => [:publicacions => {:only =>[:id,:omitir,:anio,:titulo,:revista_nombre,:primer_autor,:autor_correspondiente,:coautor,:estado_id],:include => [:subtipo]}]}]}]})
end
respond_to do |format|
format.html
format.json { render :json => @Publicaciones}
format.xlsx
end
end
(稍后我将使用JBuilder来避免长@Publicaciones…)
“listado_publicaciones”首先显示一个html视图,其中使用angular获取发布的json列表,用户可以在生成excel之前丢弃一些项目。。
然后,用户单击一个按钮“ToExcel”,调用angularjs服务:
@project.service 'concursos_xlsx', [
'$resource'
($resource) ->
$resource '/concursos/:id/:action.xlsx', { id: '@id' },
listado_publicaciones:
method: 'POST'
params: action: 'listado_publicaciones'
]
我使用POST,因为我返回了一个$scope,其中包含我第一次在Json上获得的发布,这是一个非常大的发布列表和一些其他数据,所以如果我尝试使用GET,由于url太长,将无法工作
然后,同一个控制器“listado_publicaciones”获取参数publicaciones(params[:publicaciones]),并响应xlsx格式
然后,名为“listado_publicacions.xlsx.axlsx”的模板生成excel文件。。。。但是我不知道如何下载它。。。
如果我查看chrome开发者工具,我可以看到:
XHR finished loading: POST "http://localhost:3000/concursos/1/listado_publicaciones.xlsx".
如果我双击那里,我可以下载xlsx文件。。。但我只是不知道如何下载文件时,点击“到Excel”按钮。。。
我尝试过使用“发送_数据””、“发送_文件””,但可能我用错了。。。
请帮忙,谢谢 朱利奥,你试过使用隐形iframe吗。