类UserController具有以下代码:
def create
@user = User.new(params[:user].permit(:userid,:password,:email))
render plain: params[:user].inspect+"||"+@user.inspect
#@user.save
#flash[:notice] = "You signed up successfully"
#redirect_to @user
end
表单包含以下代码:(@user
或:user
,无关紧要,输出相同)
<%= form_for :user, url:users_path do |f| %>
<%= f.label:USERID %><%= f.text_field :userid %><br />
<%= f.label:PASSWORD %><%= f.password_field :password %><br />
<%= f.label:EMAIL %><%= f.text_field :email %><br />
<br />
<%= f.submit %>
<% end %>
当我填写表格时,我得到了这个输出:
{"userid"=>"viky", "password"=>"123456", "email"=>"aa"}||#<User id: nil, userid: nil, password: nil, email: nil, created_at: nil, updated_at: nil>
正如您所看到的,用户标识,密码和电子邮件在参数中传递但未出现在@users中,我不知道为什么。 然后,如果我输入@ users.save,那么它会在数据库中保存一个空行。
答案 0 :(得分:0)
我猜你的许可证语法错误
使用:params.require(:user).permit(:userid,:password,:email)
答案 1 :(得分:0)
这是因为用户模型中的attr_accessor,我从用户模型中删除了attr_accessors并且工作正常