我有一个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]的存储位置。因此,我在调试问题时遇到了问题。
感谢您的帮助!!
答案 0 :(得分:1)
您是否可以100%的时间复制此行为,或者只是在日志中看到它?
看起来有人从/ comments(评论#index)到达comments#new
。是否有/评论的路线?
运行rake routes
查看您的所有路线。
如果有一条评论#index的路径,并且由于您只打算让人们在特定文章的上下文中发表评论,因此没有理由将其公开,请考虑删除评论#指数路线。
另外,有一点需要考虑,request.referrer 不始终可用。它是由客户发送的,可能会选择不发送它(例如某些隐私扩展程序会删除此标题)。