我发布了一些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。
答案 0 :(得分:2)
如果您使用的是ajaxForm,那么您将通过XMLHttpRequest发出ajax请求,这意味着浏览器窗口不会刷新。那么,您所做的就是重定向ajax请求。为了使其按您的意愿工作,您需要将状态代码返回给ajax请求,当客户端浏览器处理该请求时,浏览器会加载备用URL。