经过反复试验,我将问题缩小到下面的第5行。由于某种原因,.js响应将结束用户会话。使用3.0.4并设计1.1.7(和jQuery 1.5)。
此外,@ organization正在更新,并且日志中将显示Completed 200 OK,因此用户不知道他/她已注销,直到尝试下一个操作为止。
任何帮助和指导,我们将不胜感激。
*Controller* 1 def make_featured 2 @organization = Organization.find(params[:id]) 3 @organization.is_featured ? @organization.update_attribute(:is_featured,"false") : @organization.update_attribute(:is_featured,"true") 4 respond_to do |format| 5 format.js {render :action => "update", :layout => false} 6 end 7 end
和
*update.js.haml* $("#organization_" + "#{@organization.id}" ).replaceWith("#{ escape_javascript(render :partial => 'users/supplier_view', :locals => {:organization => @organization}) }");
非常感谢Google Devise Group的Brandon Martin向我指出了正确的方向…
这是Rails 3.0.4安全修复程序的结果。
http://weblog.rubyonrails.org/2011/2/8/csrf-protection-bypass-in-ruby-on- rails
经过大约一个小时的工作后,这里有一些针对其他人的提示…
rake rails:update
csrf_meta_tag
javascript_include_tag
希望有帮助!