Rails强大的params给出错误的参数数量异常

时间:2014-06-30 21:19:51

标签: ruby-on-rails strong-parameters

我尝试按照某些教程实现简单授权。

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)&#39;。 无法理解,我做错了什么? rails 4.1.1

1 个答案:

答案 0 :(得分:2)

require方法,或更具体地说ActionController::Parameters#require,只将param键作为参数。

从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