如何在成功提交AJAX表单后重定向(Rails 3.2)

时间:2012-02-29 20:53:37

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

假设您有一个:remote => true的编辑表单。您的控制器方法看起来像

 def update
    @article = Article.find(params[:id])

    respond_to do |format|
        if @article.update_attributes(params[:article])
            format.html { redirect_to @article}
            format.js { render :js => "window.location.replace('#{article_path(@article)}');"}
        else
            format.html { render :action => "edit" }
            # Render update.js.erb which replaces the body of the form
            format.js {}
        end
    end
end

在Rails 3.2.1中成功更新文章的最佳方法是什么?原始的JS解决方案看起来有点邋,但我确实喜欢这样一个事实:它显然与format.html版本执行相同的功能。

我更喜欢不使用RJS(if that even works in Rails 3.2?)

的解决方案

2 个答案:

答案 0 :(得分:1)

如何在视图文件本身上添加以下代码行

#some_file.js.erb

`window.location = redirect_path

正如您在问题中所提到的,您不喜欢RJS,但我认为比在控制器中编写js代码更好地遵循这种模式。

答案 1 :(得分:0)

你的ajax是否与模型(.php,.asp?)相互作用。在这种情况下,我首选的方法是在提交后在模型中创建成功/失败标准,并直接从那里重定向。不确定这个应用程序是否有意义吗?