ruby-on-rails – 控制器中的JS格式
发布时间:2020-12-17 01:56:33 所属栏目:百科 来源:网络整理
导读:让我们假设我有一个控制器动作,每当你试图通过js格式访问它时,我想什么都不渲染. def no_js_please # there isn't a no_js_please partial or view respond_to do |format| format.html { # render a template } format.json { render json: {valid: true} }
让我们假设我有一个控制器动作,每当你试图通过js格式访问它时,我想什么都不渲染.
def no_js_please # there isn't a no_js_please partial or view respond_to do |format| format.html { # render a template } format.json { render json: {valid: true} } format.js { render nothing: true,status: :not_found } end end 当您通过html或JSON访问端点时,它可以正常工作.当您尝试通过JS访问它时,它不起作用.但是,它确实执行了块,因为如果我在js块中添加binding.pry,它就会被拾取. 但是,这确实有效: def no_js_please if request.format.js? render nothing: true,status: :not_found end end 那两者之间的区别是什么? 编辑 作为下面提到的人,实际的错误是什么?因此,在这种特殊情况下,它会引发一个ActionController :: InvalidCrossOriginRequest. 解决方法
使用“head”而不是“render nothing:true”.无论如何,后者实际上已在Rails 5中弃用.
def no_js_please respond_to do |format| format.html { # render a template } format.json { render json: {valid: true} } format.js { head :not_found } end end 这将为您提供您正在寻找的结果,并且在升级时将更改一行. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |