0

我正在尝试使用 has_secure_password 的简单身份验证系统,但我收到了标题中列出的错误。我已经多次看到这个问题,但其他人的建议或修复都没有为我工作。我正处于我确定我必须有一个简单的错误但我找不到任何错误的地步。下面发布的是我的相关代码:

宝石文件:

gem 'rails', '3.2.13'

gem 'bcrypt-ruby'

用户控制器:

class UsersController < ApplicationController
def new
  @user = User.new
end

def create
  @user = User.new(params{:user})
  if @user.save
    session[:user_id] = @user.id
    redirect_to root_url, notice: "User created"
  else
    render "new"
    end
  end
end

用户模型:

class User < ActiveRecord::Base
  has_secure_password
  attr_accessible :email, :password, :password_confirmation

  validates :password, presence: true, length: { minimum: 6 }
  validates_confirmation_of :password

  validates :password_confirmation, presence: true
end

用户形式:

<div class="field">
  <%= f.label :email %><br />
  <%= f.text_field :email %>
</div>
<div class="field">
  <%= f.label :password %><br />
  <%= f.password_field :password %>
</div>
<div class="field">
  <%= f.label :password_confirmation %><br />
  <%= f.password_field :password_confirmation %>
</div>
<div class="actions"><%= f.submit "Sign Up" %></div>
<% end %>

移民:

class CreateUsers < ActiveRecord::Migration
  def change
    create_table :users do |t|
      t.string :email
      t.string :password_digest

      t.timestamps
    end
  end
end

这是我得到的实际错误:

Can't mass-assign protected attributes: utf8, authenticity_token, user, commit, action,      controller

预先感谢您对我的困境的任何见解。

4

1 回答 1

2

您正在分配完整的参数哈希,其中提到了所有这些字段。这就是原因

@user = User.new(params{:user})

应该是

@user = User.new(params[:user])
于 2013-04-24T23:10:25.170 回答