2013-04-24 65 views
0

我正在嘗試使用has_secure_password進行簡單的身份驗證系統,並且出現標題中列出的錯誤。我多次看過這個問題,但其他人的建議或修復都不適合我。我在哪裏我「敢肯定,我必須有一個簡單的錯誤,但我可以找到沒有點以下發布是我的相關代碼:Rails無法批量分配受保護的屬性

的Gemfile:

gem 'rails', '3.2.13' 

gem 'bcrypt-ruby' 

users_controller:

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 

預先感謝您的任何見解,以我的困境。

回答

2

您正在分配完整的參數散列,其中提到了所有這些字段。這是原因

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

這應該是

@user = User.new(params[:user]) 
+0

哇!我知道我錯過了一些簡單的事情。盯着看,沒有看到。謝謝,我現在感覺很傻。 – fuller 2013-04-24 23:13:09

相關問題