Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 5-重定向时保留:js格式_Ruby On Rails_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails Rails 5-重定向时保留:js格式

Ruby on rails Rails 5-重定向时保留:js格式,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,我的情况是: 浏览器向服务器提交JS格式请求 服务器操作重定向到另一个服务器操作 第二个操作在.js.erb文件中呈现javascript 尽管尝试了许多方法,Rails 5还是按字面意思呈现了.js.erb,向我展示了视图中的实际代码 如何让Rails重定向到JS格式,以便JS.erb文件正常运行 在Rails 4.2中,这起作用: redirect_to custom_data_path(...), format: 'js' 在Rails 5.2中,我尝试过: # 1 redirect_t

我的情况是:

  • 浏览器向服务器提交JS格式请求
  • 服务器操作重定向到另一个服务器操作
  • 第二个操作在
    .js.erb
    文件中呈现javascript
  • 尽管尝试了许多方法,Rails 5还是按字面意思呈现了.js.erb,向我展示了视图中的实际代码

    如何让Rails
    重定向到JS格式,以便JS.erb文件正常运行

    在Rails 4.2中,这起作用

    redirect_to custom_data_path(...), format: 'js'
    
    在Rails 5.2中,我尝试过:

    # 1
    redirect_to custom_data_path(...), format: 'js'
    
    # 2
    redirect_to custom_data_path(...), format: :js
    
    # 3
    respond_to do |format|
      format.js { redirect_to custom_data_path(...) }
    end
    
    # 4
    request.format = :js
    respond_to do |format|
      format.js { redirect_to custom_data_path(...) }
    end
    

    我认为js请求没有概念或“重定向”。您始终可以呈现一个脚本,该脚本向所需的“重定向”url发出请求

    而不是

    format.js { redirect_to custom_data_path(...) }
    
    您可以使用

    //I'm using query just as an example, but it can be done with vanilla javascript o any js framework
    $.getScript('<%= custom_data_path -%>');
    
    //我使用query只是作为一个例子,但它可以通过任何js框架来实现
    $.getScript(“”);
    
    我遇到了同样的问题,重定向时没有保留我的格式(json)

    我用(Rails 5)解决了这个问题:

    将_重定向到_路径(,params:request.query_parameters.merge(格式:params[:format]))


    您是否尝试将
    格式::js
    作为命名路由的选项而不是重定向到方法的选项来移动<代码>自定义数据路径(..,格式::js)
    。此外,选中此选项,如果使用turbolink,可能必须尝试使用turbolink选项。就我个人而言,我不会使用js格式的重定向,我不确定它是否是一个标准(一件事是它可以工作,另一件事是它打算以这种方式工作),我找不到关于它的官方信息。在路径中移动
    格式:“js”
    。非常感谢。