Rails控制器方法响应JS的Jquery问题

Rails控制器方法响应JS的Jquery问题,jquery,ruby-on-rails,ajax,Jquery,Ruby On Rails,Ajax,有一个弹出框,其中包含新用户的表单。它是远程提交的。如果@user.save,我将使用js文件重定向,如果不是,则只刷新弹出框。刷新工作正常,但重定向是一个问题 这是我的密码: def create @user = User.new(params[:user]) @user.email=@user.email.downcase @user.guest=false if @user.save @status=true session[:u

有一个弹出框,其中包含新用户的表单。它是远程提交的。如果@user.save,我将使用js文件重定向,如果不是,则只刷新弹出框。刷新工作正常,但重定向是一个问题

这是我的密码:

  def create
    @user = User.new(params[:user])
    @user.email=@user.email.downcase
    @user.guest=false
    if @user.save
      @status=true
      session[:user_id] = @user.id
    else
      @status=false
    end
    respond_to do |format|
      format.js{@status}
    end
  end
和create.js.erb:

if(<%=@status %>) {
    window.location.replace("<%= j root_url %>")
}else {
    $('.new_user_popup').replaceWith("<%= j render :partial => 'users/form' %>");
    $('.new_user_popup').fadeIn('fast');

}
if(){
window.location.replace(“”)
}否则{
$('.new\u user\u popup')。替换为(“'users/form”%>”;
$('.new_user_popup').fadeIn('fast');
}
还有一个重要的时刻,它让我非常困惑-与其他脚本的工作方式不同。 我的意思是,如果我删除了else部分,并且@user.save-它会像预期的那样重定向


谢谢你的帮助

我不知道这段代码有什么不好。事实上,同样的逻辑在类似的情况下运行良好,我认为它与rails的默认行为有关,比如“create”。 只是这样修复了它:

 def create
    @user = User.new(params[:user])
    @user.email=@user.email.downcase
    @user.guest=false
    if @user.save
      @status=true
      render :action => 'redirect_user'
      session[:user_id] = @user.id
    else
      render :action =>'reload_box'
    end
  end

  def redirect_user
  respond_to do |format|
    format.js
  end
  end

  def reload_box
    respond_to do |format|
      format.js
    end
  end

每个JS模板都与它的代码部分一起工作。

如果在:window.location.replace(“”)的末尾添加分号,会发生什么情况。。。差不多。