繁体   English   中英

来自子控制器的response_to

[英]respond_to from child controller

我目前正在修改一个开源的Rails项目,在完成了许多教程和推荐后,我想在项目中进行一些导出,但我不断收到UnknownFormat错误,然后我意识到在所有项目控制器“ application_controller.rb”的父控制器中都有默认的response_to,如下所示:

rescue_from CanCan::AccessDenied do |exception|
    respond_to do |format|
        format.html { redirect_to main_app.root_url, alert: exception.message }
        format.json { render json: {error: exception.message}, status: :forbidden }
    end
end

然后我决定把它变成这个

rescue_from CanCan::AccessDenied do |exception|
    respond_to do |format|
        format.html { redirect_to main_app.root_url, alert: exception.message }
        format.json { render json: {error: exception.message}, status: :forbidden }
       format.csv
       format.xls
    end
end

unknownformat错误停止了,但随后我无法控制子控制器中的代码,似乎忽略了我的自定义格式方法的代码,直截了当地尝试寻找csv模板并将其呈现,子控制器具有以下功能:

respond_to do |format|
    format.html
    format.csv { send_data @users.to_csv }
    format.xls
end

我在Rails方面不是很熟练,我的意思是这是我的第一个项目,我从修改现有项目开始,所以我不知道我应该如何告诉te applicaation_controller识别csv和xls格式,但前提是子控制器响应该格式。

我将调查为什么CanCan会拒绝访问。 我最初的猜测是,当用户被拒绝时,您不想提供CSV。 该方法是为了防止未经授权的访问,因此一旦建立访问权限,便可以将控制器设置为按所需的.csv路由。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM