Ruby on rails 会话变量禁用Heroku部署(Rails)

Ruby on rails 会话变量禁用Heroku部署(Rails),ruby-on-rails,ruby,session,deployment,heroku,Ruby On Rails,Ruby,Session,Deployment,Heroku,我现在很绝望,搜索了很多次,但没有任何帮助。 我有rails 3.1.0 我的小应用程序只是一个包含数据和排序过滤内容的表格。 我在Heroku上做得很好,但后来我添加了一点会话变量来存储页面中的过滤参数。它在本地主机上运行得非常完美,但Heroku显示“很抱歉,出现了一些问题”。 我试过用stack cedar做,但没用 Heroku日志没有说任何有用的东西 我再说一次,如果我删除所有会话,它会工作得很好( 这是我使用会话的代码,我在这里看不到任何东西,只是常规会话: def index @a

我现在很绝望,搜索了很多次,但没有任何帮助。 我有rails 3.1.0 我的小应用程序只是一个包含数据和排序过滤内容的表格。 我在Heroku上做得很好,但后来我添加了一点会话变量来存储页面中的过滤参数。它在本地主机上运行得非常完美,但Heroku显示“很抱歉,出现了一些问题”。 我试过用stack cedar做,但没用 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]
def索引
@所有分级=Movie.vasta
@选定的_评级=[]
#如果!会话[:评级].nil?
##重定向到“电影路径”
#结束
if!params[:sort].nil?
会话[:sr]=参数[:排序]
结束
if!params[:ratings].nil?
参数[:评级]。每个_键都有|键|

@如果您定义
会话[:ratings]
,所选的\u评级是否会无限重定向

顺便说一句,我发现
if!variable.nil?
非常令人困惑。您可以使用
if variable
if variable.present?
哪一个读起来更好


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

它在本地工作吗?是的,它工作得很好。如果没有排序,看起来您最终会尝试按nil排序参数,并且session中没有以前的值,但sort by nil表示我不排序。它与params[:sort]一起工作当它是nil时,为什么它不能与同一事物的session一起工作?我怀疑order方法是否期望您传递nil。事实上,即使
除非variable.nil?
也是一种更好的编写方法,但您列出的两种方法更有意义。session[:ratings]重定向在注释中,它们没有被执行,我这里根本没有重定向。哦,对不起,我以为注释掉的行是导致问题的那些行。