这是我得到的例外:
ActiveRecord::RecordInvalid in UsersController#create
Validation failed: Email can't be blank, Password can't be blank
但是,参数似乎被正确拾取:
要求
Parameters
{"utf8"=>"✓",
"authenticity_token"=>"l4gsQ/dO9+482Yf1Eq+MBSEVT9zcG4XdN37h1ZhnEIM=",
"user"=>{"email"=>"d@email.com",
"password"=>"[FILTERED]",
"password_confirmation"=>"[FILTERED]",
"username"=>"studentd",
"teacher"=>"Example"},
"commit"=>"Sign up",
"format"=>"user"}
这是我create
在 UsersController 中的方法。我正在使用Devise
身份验证,但仍然有一个 UsersController,主要是因为它更容易让我理解。
def create
@user = User.create(:email => params[:email], :password => params[:password],
:password_confirmation => params[:password_confirmation], :username => params[:username],
:teacher => params[:teacher], :role => "student")
@user.save!
end
我知道这create
应该为您保存,但如果我没有明确调用它,则用户模型不会保存到数据库中。
最后,这是我试图从中获取数据的表格。这里的用例是admin
用户将使用它来注册students
。
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => user_registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.label :username %><br />
<%= f.text_field :username %></div>
<div><%= f.label :teacher %><br />
<%= f.text_field :teacher %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>