过滤器重定向之前没有显示的rails

时间:2012-02-23 20:08:32

标签: ruby-on-rails before-filter

我发布了一些javascript的评论。这将在comments控制器中调用create动作,该控制器具有一个before过滤器,用于检查用户是否属于正确的组。前置过滤器有一个重定向到仪表板页面,但是当我尝试与不在正确组中的用户发布评论时,评论不会被创建,但重定向不会发生。

这是前过滤器:

  def require_correct_user
    activity = Activity.find(params[:activity_id])
    unless (current_user.group == activity.group)
      redirect_to dashboard_path
    end
  end

我在服务器日志中看到以下内容:

Started GET "/dashboard" for 127.0.0.1 at 2012-02-23 14:40:07 -0500
  Processing by UsersController#dashboard as */*

但是页面在浏览器中保持不变,并且似乎没有重定向。

什么阻止页面重定向?是否与使用javascript发布的评论有关?

澄清:

我使用表单

将评论发布到创建操作
=form_tag({ :action => 'create', :controller => 'comments', :method => 'post' }

但是我使用jquery-form插件提交表单并调用ajaxForm。

1 个答案:

答案 0 :(得分:2)

如果您使用的是ajaxForm,那么您将通过XMLHttpRequest发出ajax请求,这意味着浏览器窗口不会刷新。那么,您所做的就是重定向ajax请求。为了使其按您的意愿工作,您需要将状态代码返回给ajax请求,当客户端浏览器处理该请求时,浏览器会加载备用URL。