加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

这将为您提供您正在寻找的结果,并且在升级时将更改一行.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读