我可以将一个javascript请求重定向到另一个javascript操作吗?
我有一个带有索引和创建操作的评论控制器。这两种操作都响应html和js格式 每当我通过ajax收到create请求时,我都想添加新的注释,然后重定向到index.js,这样屏幕上的注释就可以在不重新加载页面的情况下得到更新 这种东西在Chrome中工作得很完美。但无论何时我在Firefox或IE中尝试这一点,结果是create.js的重定向都会出现在index.html中 即使我强制重定向为js:我可以将一个javascript请求重定向到另一个javascript操作吗?,javascript,ruby-on-rails,firefox,Javascript,Ruby On Rails,Firefox,我有一个带有索引和创建操作的评论控制器。这两种操作都响应html和js格式 每当我通过ajax收到create请求时,我都想添加新的注释,然后重定向到index.js,这样屏幕上的注释就可以在不重新加载页面的情况下得到更新 这种东西在Chrome中工作得很完美。但无论何时我在Firefox或IE中尝试这一点,结果是create.js的重定向都会出现在index.html中 即使我强制重定向为js: redirect_to polymorphic_path([@commentable, :comm
redirect_to polymorphic_path([@commentable, :comments]), :format => 'js'
它在Firefox和IE中以.html格式登陆
知道这里会发生什么吗?浏览器以不同方式处理302个请求时会出现各种问题。一些丢失请求类型,另一些丢失请求方法(示例票证:) 我建议在使用JS时,不要重定向到新的URL,只需呈现相同的操作即可。比如说:
class CommentsController < ApplicationController
def index
setup_for_index
respond_to :html, :js
end
def create
# Creation stuff...
respond_to do |format|
format.html {redirect_to :action => :index}
format.js do
setup_for_index
render :action => :index
end
end
end
private
def setup_for_index
@comments = ...
end
end
class CommentsController:index}
format.js do
为索引设置\u
呈现:操作=>:索引
结束
结束
结束
私有的
索引的def设置
@评论=。。。
结束
结束
不是:format=>js应该是多态路径多态路径([@commentable,:comments],:format=>'js'),这正是它应该的。事实证明,这种格式是正确强制的,所以我在大多数操作中使用了重定向到多态路径([@commentable,:comments],:format=>request.format.to_sym)。一般的问题是,像Chrome或Safari这样的Webkit浏览器在获得302重定向时会保留请求类型。Firefox和IE在请求后忘记了类型,因此必须手动设置。