使用ajax调用重定向到控制器的操作

时间:2012-03-21 12:29:54

标签: jquery ruby-on-rails

我正在使用jquery ajax调用,并且在控制器操作中我想重定向某些操作但是在

我使用redirect_to“/ some_action”。然后它没有重定向到我想要的行动请给

任何有用的建议。

<%= link_to "javascript:;" ,:onclick => "admin_fun"%>

我的jquery ajax调用是

function admin_fun() {
  if (confirm("Are you sure you want to add?")) {
    var container = $("#trunk_detail");

    $.ajax({
      url:'/accounting/add_rule',
      type:'get',
      dataType:'html',
      processData:false,
      success:function (data) {
        container.html(data);
      }
    });
  }
}

我的控制器代码是

def add_rule
  # do somthing

  redirect_to "/accounting/index_report"   

  render :text => "ok"
end

2 个答案:

答案 0 :(得分:0)

你不能在这样的rails动作中引起2个响应。如果您检查日志,您可能会在add_rule操作中看到“双重渲染错误”。你为什么要重定向?如果你能更清楚地解释一下你的实际意图,那么我们就可以得到一些能够做到这一点的代码。

答案 1 :(得分:0)

这一行不会给你想要的结果,因为你可以重定向或渲染多次。而不是从控制器中省略这一行

redirect_to“/ accounting / index_report”

并在jquery ajax调用成功响应时,您可以重定向到所需的操作,如

if(确认(“您确定要添加吗?”)){

var container = $("#trunk_detail");

$.ajax({

    url:'/accounting/add_rule',

    type:'get',

    dataType:'html',

    processData:false,

    success:function (data) {

        container.html(data);

        window.location.replace("/accounting/index_report"); 

    }
});

} }

享受........