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

时间:2018-09-13 23:18:43

标签: ruby-on-rails ruby-on-rails-5

我遇到的情况是:

  1. 浏览器向服务器提交JS格式请求。
  2. 服务器操作重定向到另一个服务器操作。
  3. 第二个动作将JavaScript呈现在.js.erb文件中。

尽管尝试了多种方法,Rails 5仍按字面呈现.js.erb,在视图中显示了实际的代码。

如何使Rails redirect_to以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

2 个答案:

答案 0 :(得分:0)

我认为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 -%>');

答案 1 :(得分:0)

我遇到了相同的问题,即重定向时未保留我的格式(json)

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

  

redirect_to _path(,参数:request.query_parameters.merge(format:params [:format]))