【问题标题】:Rails strong params giving wrong number of arguments exceptionRails强参数给出错误数量的参数异常
【发布时间】:2014-06-30 21:19:50
【问题描述】:

我正在尝试按照某些教程实施简单的授权。

class AuthController < ApplicationController

    layout 'public'
    def auth_user
        user = User.authenticate(login_params)
        if user
            session[:user_id] = user.id
            redirect_to(:action => 'home')
        else
            flash[:notice] = "wrong username or password"
            flash[:color]= "invalid"
            render "login"  
        end
    end

  private

  def login_params
    params.require(:login_data, :password)
  end

end

并在 params.require 处获得异常,说“参数数量错误(2 比 1)”。 无法理解,我做错了什么? 轨道 4.1.1

【问题讨论】:

    标签: ruby-on-rails strong-parameters


    【解决方案1】:

    require 方法,或者更具体地说是ActionController::Parameters#require,只接受一个参数键作为参数。

    从 Rails 4.1.1 源代码可以看出:

    # File actionpack/lib/action_controller/metal/strong_parameters.rb, line 172
    def require(key)
      self[key].presence || raise(ParameterMissing.new(key))
    end
    

    【讨论】:

    • 是否从 rails 4.0.0 开始修改?因为这是它与我正在使用的教程一起使用的唯一解释
    • 我不这么认为。该方法在 4.0 稳定分支上看起来非常相似:github.com/rails/rails/blob/4-0-stable/actionpack/lib/…
    • 你确定你的教程没有使用带有两个参数的#permit而不是#require吗?
    • 我找不到教程的网址,但是我确定。这里是private def admin_user_params params.require(:admin_user).permit(:first_name, :last_name, :email, :username, :password) end
    • 你去。在您发布的 sn-p 中是 #permit,而不是 #require
    猜你喜欢
    • 1970-01-01
    • 2018-08-24
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    相关资源
    最近更新 更多