Rails redirect_to使用Ruby 2.2 / Rails 4.2的新行为?

尝试从Ruby 2.0 / Rails 4.0升级到Ruby 2.2 / Rails 4.2,登录我的应用程序时遇到了一个令人惊讶的错误(基于M. Hartl的Rails Tutorial):

Controller: SessionsController#create Instruction: redirect_to root_url Error message: wrong number of arguments (2 for 1) 

这是会话控制器:

 class SessionsController < ApplicationController def new end def create user = User.find_by_login(params[:session][:login]) if user && user.authenticate(params[:session][:password]) sign_in user redirect_to root_url else flash.now[:error] = 'Invalid login/password combination' render 'new' end end def destroy sign_out redirect_to root_url end end 

这是路线文件:

 ODQStairs::Application.routes.draw do resources :requests #static pages get '/help', to: "static_pages#help" get '/about', to: "static_pages#about" get '/contact', to: "static_pages#contact" #root definition root to: "dashboards#home" #routes resources :sessions, only: [:new, :create, :destroy] get '/signin', to: 'sessions#new' , via: :get match '/signout', to: 'sessions#destroy', via: :delete resources :parameters_lists do resources :parameters end ... 

关于redirect_to函数,我没有在Rails升级指南中找到任何内容。 欢迎您的帮助! 谢谢!

我在Rails 4.0到4.2升级的RSpec测试中遇到了同样的问题,并确定它与turbolinks有关。 我的Gemfile.lock有:

 turbolinks (1.3.0) 

我将我的Gemfile中的turbolinks依赖行更改为

 gem 'turbolinks', '~> 2.5' 

然后我使用以下bundler命令升级了gem:

 bundle update --source turbolinks 

它将我的turbolinks版本升级到最新版本,现在redirect_to方法在我的测试中按预期工作。

我看了一下我的gem版本,实际上我错过了一些。 我已经更新到最新版本,已经安装了gem:

 Installing websocket 1.2.1 Installing selenium-webdriver 2.44.0 Installing bootstrap-will_paginate 0.0.10 Installing sass 3.4.12 Installing annotate 2.6.5 Installing globalid 0.3.3 

这解决了这个问题。

最好的祝福,

弗雷德