【问题标题】:Session variables disable Heroku deployment (Rails)会话变量禁用 Heroku 部署 (Rails)
【发布时间】:2013-08-02 20:21:59
【问题描述】:

我现在很绝望,搜索了很多,但没有任何帮助。 我有导轨 3.1.0 我的小应用程序只是包含数据和排序过滤内容的表格。 我在 Heroku 上工作得很好,但后来我添加了一些会话变量来通过页面存储过滤参数。它在本地主机上运行完美,但 Heroku 显示“我们很抱歉,但出了点问题”。 我试过用 --stack cedar 来做 - 没有帮助 Heroku 日志没有说任何有用的信息。

我再说一遍 - 如果我将删除所有会话它工作完美。 :( 这是我使用会话的代码,在这里我看不到任何破坏 Heroku 的东西,只是常规会话:

def index
@all_ratings=Movie.vasta
@selected_ratings=[]
#if !session[:ratings].nil?
##  redirect_to 'movies_path'
#end
if !params[:sort].nil?
  session[:sr]=params[:sort]
end
if !params[:ratings].nil?
  params[:ratings].each_key do |key|
    @selected_ratings << key
  end
elsif
  @selected_ratings = session[:selre]
end
session[:selre]=@selected_ratings
@movies = Movie.order(session[:sr]).where("rating IN (?)", session[:selre])

@varka=session[:sr]

结束

非常感谢您。

日志

2013-08-01T18:34:24.021832+00:00 heroku[路由器]: at=info method=GET path=/movies host=myassnevercries.herokuapp.com fwd="88.85.159.248" dyno=web.1连接=2ms 服务=673ms 状态=500 字节=728

【问题讨论】:

  • 它在本地工作吗?
  • 是的,效果很好
  • 如果没有排序参数并且会话中没有先前的值,您最终会尝试按 nil 排序
  • 但是按 nil 排序意味着我只是不排序。当它为 nil 时它与 params[:sort] 一起使用,为什么它不能与同一事物的 session 一起使用?
  • 我怀疑 order 方法期望你通过 nil。

标签: ruby-on-rails ruby session deployment heroku


【解决方案1】:

如果您定义session[:ratings],这不会进入无限重定向吗?

顺便说一句,我发现if !variable.nil? 真的很混乱。您可以只使用if variableif variable.present?,这样会更好读。

无论如何,如果session[:ratings] 被定义一次,它会再次重定向到索引操作,它会到达if !session[:ratings].nil? 并且它仍然不是 nil 并再次重定向。我不明白这如何在本地工作。您没有从浏览器收到某种无限重定向错误吗?会话变量不会在重定向时重置或清除。

【讨论】:

  • 确实,即使unless variable.nil? 是一种更好的写法,但您列出的两个更有意义。
  • session[:ratings] 和重定向在 cmets 中,它们没有被执行,我这里根本没有重定向。
  • 哦,抱歉,我认为注释掉的行是导致问题的行。
猜你喜欢
  • 2014-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
  • 2016-11-19
  • 2012-08-29
  • 2016-08-06
相关资源
最近更新 更多