2016-11-07 103 views
1

我在Ruby on Rails中遇到了我的用户注册表单问题。 我之前只使用用户名,电子邮件和密码工作。但是,当我尝试添加名字,姓氏和邮政编码的字段时,它停止将任何数据插入到数据库中,并且只是重定向回注册表单。Ruby on Rails中破坏的用户注册表格

我做到了正确的方式生成迁移和迁移数据库 - 表单仍然无法正常工作。

然后,我完全丢弃了数据库,并重新创建了包含所有字段的数据库,但它仍然不起作用。数据库使用正确的字段正确生成,并且我不确定断开连接的位置。

我使用红宝石2.3.1。

用户控制器:

class UsersController < ApplicationController 

    def new 
    @user = User.new 
end 

def create 
    @user = User.new(user_params) 
    if @user.save 
    session[:user_id] = @user.id 
    redirect_to '/home' 
    else 
    redirect_to '/register' 
    end 
end 

private 
    def user_params 
    params.require(:user).permit(:username, :email, :password, :location, :fname, :lname) 
    end 

end 

用户模式:在用户

class User < ApplicationRecord 

    has_secure_password 

end 

窗体/新:

<div class="container">  
    </div> 

<div id="contact" class="container-fluid bg-grey"> 

    <h2 class="text-center">Create An Account</h2> 
    <form> 

     <%= form_for(@user) do |f| %> 
     <%= f.text_field :username, :placeholder => "Username" %> 
     <%= f.email_field :email, :placeholder => "Email" %> 
     <%= f.password_field :password, :placeholder => "Password" %><br/><br/> 
     <%= f.text_field :fname, :placeholder => "First Name" %> 
     <%= f.text_field :lname, :placeholder => "Last Name" %> 
     <%= f.number_field :location, :placeholder => "ZIP Code (US Only)" %><br/><br/> 
     <%= f.submit "Create an Account", class: "btn-submit" %> 
    <% end %> 

</div> 

</ul> 
</nav> 
</body> 
</html> 

创建用户迁移:

class CreateUsers < ActiveRecord::Migration[5.0] 
    def change 
    create_table :users do |t| 
     t.string :username 
     t.string :email 
     t.string :password_digest 
     t.numeric :location 
     t.string :fname 
     t.string :lname 

     t.timestamps 
    end 
    end 
end 

从日志:

Started GET "/register?utf8=%E2%9C%93&authenticity_token=b6M1gpQx8BTLhBqjjh6R%2BlSGghcSh18Mg7eGskLGNyq11RBvGCX%2BOJjVhSLwwRmZunn1sYvV4MGHB7vrJw6Rhg%3D%3D&user%5Busername%5D=jsmith1&user%5Bemail%5D=jsmith%40email.com&user%5Bpassword%5D=[FILTERED]&user%5Bfname%5D=John&user%5Blname%5D=Smith&user%5Blocation%5D=60606&commit=Create+an+Account" for ::1 at 2016-11-07 15:14:50 -0600 
Processing by UsersController#new as HTML 
    Parameters: {"utf8"=>"✓", "authenticity_token"=>"b6M1gpQx8BTLhBqjjh6R+lSGghcSh18Mg7eGskLGNyq11RBvGCX+OJjVhSLwwRmZunn1sYvV4MGHB7vrJw6Rhg==", "user"=>{"username"=>"jsmith1", "email"=>"[email protected]", "password"=>"[FILTERED]", "fname"=>"John", "lname"=>"Smith", "location"=>"60606"}, "commit"=>"Create an Account"} 
    Rendering users/new.html.erb within layouts/application 
    Rendered users/new.html.erb within layouts/application (2.0ms) 
Completed 200 OK in 195ms (Views: 148.1ms | ActiveRecord: 21.5ms) 

) 
    Completed 200 OK in 760ms (Views: 714.8ms | ActiveRecord: 3.5ms) 

非常感谢你的任何帮助。

+2

不幸的是,“停止工作”缺乏足够的技术细节来提供帮助。有一些错误吗?究竟发生了什么?通过简单地告诉我们,通过跳过关于实际错误的大型猜谜游戏,帮助您更轻松地帮助您。 – MarsAtomic

+0

你可以发布服务器日志吗? – Monideep

+0

对不起。它不会保存用户并将数据插入数据库,它只是返回到注册表单。 – crackedact0r

回答

0

我想通了。额外的表单标签与表单提交混为一谈。一旦我从上面的Ruby表单代码中删除<form>,它就起作用了。感谢回复的人。