2

投稿すると、セッション変数の 1 つが IE で失われます。

この Web アプリケーションは、Chrome と Firefox で完全に動作します。

エラーは次のとおりです。

NoMethodError at / 

undefined method `include?' for nil:NilClass
file: welcometo.rb
location: xml_file_to_use 
line: 19

エラーが発生するメソッドは次のとおりです。

def xml_file_to_use
   groups = allowed_groups
   #Which xml file should I write to
   if (session[:location_group].include? allowed_groups[0] ) <----Line 19
    ......
end

ここに説明と私のコードがあります:

ユーザーがログインすると、セッション変数が設定されます。

#Check to see if the user is authorized
auth_token = Adauth.authenticate(params[:user], params[:password])
if auth_token 
    session[:user] = params[:user]
    session[:first_name] = auth_token.first_name.tr('/"[]', '') 
    session[:location_group] = (auth_token.groups & allowed_groups)
    redirect '/'
else 
    redirect '/login'
end

次に、これらのセッション値に基づいて変数を設定します。

get '/' do
  if session["user"] != nil
     @first_name = session[:first_name]
     @groups = session[:groups]
     @xml_file = xml_file_to_use 
     @location = location
     erb :form
  else 
    redirect '/login'
  end

end

この部分は問題なく動作します。ビューで @location 変数を使用しているため、わかります。

場所の方法は次のとおりです。

#Setup Location Variable
def location
  if (session[:location_group].include? allowed_groups[0] ) <-- This same code errors during a post in IE
     return 'Eagan'
   else
     return 'Chicago'
   end  
end
4

1 に答える 1

0

これはバグに違いないという Konstantin Haase の意見は正しいです。

彼が投稿したリンクから、これを私のwelcome.rbファイルの先頭に置くと問題が解決することがわかりました。

set :protection, except: :session_hijacking
于 2012-09-28T18:30:37.000 に答える