我目前正在修改一个开源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格式,但前提是孩子控制器响应该格式。
答案 0 :(得分:0)
我会调查为什么CanCan会拒绝访问。我最初的猜测是,当用户被拒绝时,您不想提供CSV。该方法是为了防止未经授权的访问,因此一旦建立访问权限,便可以将控制器设置为按所需的.csv路由。