通过json调用重定向到另一个页面

时间:2012-09-21 23:45:50

标签: jquery ruby-on-rails ajax ruby-on-rails-3 json

我在我的应用中使用jquery file upload实用程序。如果我通常在rails中有一些类似下面的代码......

if @course_module.save
  flash[:success] = "Class created!"
  redirect_to course_course_modules_path(@course)
else
  render 'new'
end

如果表单中有错误,它将显示错误消息,如果成功保存,则会重定向到另一个页面。但是当通过jquery提交页面时,情况并非如此 插入。原因是它需要返回一个json对象....类似

         format.json {  
          render ':json => [@course_module.to_jq_upload].to_json ' 
        }

我如何代替返回json,改为使用第一个代码片段?如果保存成功则重定向,或者如果不成功则显示错误消息?我尝试过类似下面的内容......

render 'new'

但那没用。

1 个答案:

答案 0 :(得分:0)

正常的ajax调用有成功和错误方法,只需在json响应中添加一个redirect_url键,其中包含您想要转到的路径值,并在success方法内部重定向到此URL。

$.ajax({
 type: "GET",
 url: '/path to your controller',
 datatype: 'json',
 success: function(data) {
   window.location.href = data.redirect_url
 };

});

并且你的json响应应该在控制器中看起来像这样

render :json => {course_module: @course_module.to_jq_upload, redirect_url: course_course_modules_path(@course) }.to_json 

我希望这就是你要找的东西