【问题标题】:Rails redirect_to new behaviour with Ruby 2.2 / Rails 4.2?Rails redirect_to Ruby 2.2 / Rails 4.2 的新行为?
【发布时间】:2015-04-12 02:29:17
【问题描述】:

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

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 功能的内容。欢迎您的帮助! 谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4


    【解决方案1】:

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

    turbolinks (1.3.0)
    

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

    gem 'turbolinks', '~> 2.5'
    

    然后我使用以下捆绑器命令升级了 gem:

    bundle update --source turbolinks
    

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

    【讨论】:

      【解决方案2】:

      我查看了我的 gems 版本,实际上我错过了一些。 我更新到最新版本,已安装以下 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
      

      这解决了问题。

      最好的问候,

      弗雷德

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-21
        • 1970-01-01
        • 1970-01-01
        • 2010-11-03
        相关资源
        最近更新 更多