尝试从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
...
我没有在Rails升级指南中找到有关redirect_to函数的任何内容。欢迎您的帮助! 谢谢!
答案 0 :(得分:2)
我在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方法在我的测试中按预期工作。
答案 1 :(得分:1)
我查看了我的宝石版本,实际上我错过了一些。 我已经更新到最新版本,已经安装了宝石:
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
这解决了这个问题。
致以最诚挚的问候,
佛瑞德