Rails会话存储停止正常工作

时间:2015-05-19 22:50:50

标签: ruby-on-rails heroku

我有一个Rails 3.2应用程序,它使用控制器中的会话存储来让用户回到以前的屏幕。

它已经工作了一年多了。突然之间,Heroku的生产版本开始出现问题。用户正在查看worequest并点击以下内容以添加comment

<%= link_to 'New Comment', new_comment_path(:worequest_id => @worequest.id), :class => 'btn btn-primary' %>

这是我使用的代码:

 def new
    @comment = Comment.new
    @comment.build_attachment
    @worequest = params[:worequest_id]
    session[:return_to] ||= request.referer

    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @comment }
    end
  end

  # POST /comments
  # POST /comments.json
  def create
    @comment = Comment.new(params[:comment])

    respond_to do |format|
      if @comment.save
        if session[:return_to] != nil
          format.html { redirect_to session.delete(:return_to), notice: 'Comment was successfully created.' }
          format.json { render json: @comment, comment: :created, location: @comment }
        else
          format.html { redirect_to :back, notice: 'Comment was successfully created.' }
          format.json { render json: @comment, comment: :created, location: @comment }
        end
      else
        format.html { render action: "new" }
        format.json { render json: @comment.errors, status: :unprocessable_entity }
      end
    end
  end

在开发和暂存(在Heroku上),用户在输入新的worequest后返回comment

现在处于制作阶段,网址如下所示:

mywebsite/comments instead of mywebsite/worequests/639

我甚至不确定会话[:return_to]的存储位置。因此,我在调试问题时遇到了问题。

感谢您的帮助!!

1 个答案:

答案 0 :(得分:1)

您是否可以100%的时间复制此行为,或者只是在日志中看到它?

看起来有人从/ comments(评论#index)到达comments#new。是否有/评论的路线?

运行rake routes查看您的所有路线。

如果有一条评论#index的路径,并且由于您只打算让人们在特定文章的上下文中发表评论,因此没有理由将其公开,请考虑删除评论#指数路线。

另外,有一点需要考虑,request.referrer 始终可用。它是由客户发送的,可能会选择不发送它(例如某些隐私扩展程序会删除此标题)。