在Rails应用程序中生成环境中有时会出现404错误

时间:2015-06-01 10:18:16

标签: ruby-on-rails google-chrome windows-8.1

我的网站上有一个测验模块供用户参加测验。我在控制器中设置了这样的缓存:

  def set_cache_buster
    response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
  end

很少有用户获得随机 404错误。用户在 Windows 8.1 上使用 Chrome 。每天大约有300-400名用户参加测验,其中很少有人会得到404错误。现在很难跟踪404问题,因为我们只收到生产中500个错误的通知,我们在本地或测试环境中没有遇到过这个问题。我担心的是,如果这是一个代码问题,那么所有用户都应该得到它,因为有超过30,000个用户。知道为什么这只发生在少数用户身上吗?

添加更多信息 它与任何链接无关,它只是随机发生的。就像我们有3次尝试让用户清除测验。很少有人得到错误我们要求他们利用剩下的尝试并尝试测验,他们能够。大部分时间它只能正常工作。其他用户已经完成了测验,很少有人报告相同测验的404。 例如:在考试模块中,问题逐个加载。 首先,用户首先访问:exam_instructions/some_quiz。然后用户重定向到测验页面,我有一个表格,如下所示:

<%= form_tag({:action=> "calc_score",:id => @quiz.slug, :name => 'question'},:method => :post,:id=>'form',:name=>'question') do %>
  <%= submit_tag "Submit" %>
<% end %>

用户提交并使用测验ID 将表单数据转到 calc_score 。分数计算得出:

before_filter :find_quiz

def calc_score
  #Calculates the score for the current question
  # redirects to the show page with the quiz id where the next question is presented to the user on the show page
  redirect_to :action=> "show", :id=> @quiz.slug
end

def show
#next question is loaded
end

protected
def find_quiz
 @quiz = Quiz.find_by_slug(params[:id]) or raise(ActiveRecord::RecordNotFound) if params[:id]
end

现在,当用户在提交测验后突然接受测验时,他们会看到404错误。现在,如果 @quiz 对象 nil ,则显示页面本身不会已加载但它已存在。只有在提交内容出现问题时,少数用户将:ID更改为未定义 nil ,并且用户看到的是404错误页面,其中100位用户已经完成了相同的测验。

1 个答案:

答案 0 :(得分:0)

最后整理出来的问题是能够在@EugeneM建议的404通知的帮助下跟踪它。有一个名称不正确的变量,只在某些情况下被触发。通知可以更轻松地跟踪错误。谢谢@EugeneM。

相关问题