Ruby Rails 为什么我的创建用户无法使用 bcyrpt gem?
Ruby on Rails Why isn't my create user working using bcyrpt gem?
在我的 Ruby on Rails 应用程序中,我刚刚开始尝试包括注册和登录。我首先 运行 脚手架命令:
rails generate scaffold User name:string password_digest:string role:string
然后是rake db:migrate
。这一切都很顺利,并为用户创建了所需的文件。在我的 gem 文件中,我安装了 gem 'bcrypt', '~> 3.1.7'
gem,然后将以下内容添加到 user.rb 模型中。
User.rb:
class User < ActiveRecord::Base
validates :name, presence: true, uniqueness: true
has_secure_password
end
并编辑我的 /views/users/_form.html.erb 如下所示:
<div class="form1">
<%= form_for(@user) do |f| %>
<div class="field">
<%= f.label :name, 'Name:' %>
<%= f.text_field :name, :autofocus => true %>
</div>
<div class="field">
<%= f.label :password, 'Password:' %>
<%= f.password_field :password , size: 40 %>
</div>
<div class="field">
<%= f.label :password_confirmation, 'Confirm:' %>
<%= f.password_field :password_confirmation, size: 40 %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
</div>
我的创建方法在users_controller:
def create
@user = User.new(user_params)
if @user.save
# login is achieved by saving a user's 'id' in a session variable,
# accessible to all pages
session[:user_id] = @user.id
redirect_to root_path, notice: "#{@user.name} - you have successfully registered."
else
render action: "new"
end
结束
但出于某种原因,当我添加新用户时,我的表单没有保存详细信息,有人可以帮忙吗?
- 控制台是否显示错误?请检查一下。
- 您是在定义 user_params 吗?
在我的 Ruby on Rails 应用程序中,我刚刚开始尝试包括注册和登录。我首先 运行 脚手架命令:
rails generate scaffold User name:string password_digest:string role:string
然后是rake db:migrate
。这一切都很顺利,并为用户创建了所需的文件。在我的 gem 文件中,我安装了 gem 'bcrypt', '~> 3.1.7'
gem,然后将以下内容添加到 user.rb 模型中。
User.rb:
class User < ActiveRecord::Base
validates :name, presence: true, uniqueness: true
has_secure_password
end
并编辑我的 /views/users/_form.html.erb 如下所示:
<div class="form1">
<%= form_for(@user) do |f| %>
<div class="field">
<%= f.label :name, 'Name:' %>
<%= f.text_field :name, :autofocus => true %>
</div>
<div class="field">
<%= f.label :password, 'Password:' %>
<%= f.password_field :password , size: 40 %>
</div>
<div class="field">
<%= f.label :password_confirmation, 'Confirm:' %>
<%= f.password_field :password_confirmation, size: 40 %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
</div>
我的创建方法在users_controller:
def create
@user = User.new(user_params)
if @user.save
# login is achieved by saving a user's 'id' in a session variable,
# accessible to all pages
session[:user_id] = @user.id
redirect_to root_path, notice: "#{@user.name} - you have successfully registered."
else
render action: "new"
end
结束
但出于某种原因,当我添加新用户时,我的表单没有保存详细信息,有人可以帮忙吗?
- 控制台是否显示错误?请检查一下。
- 您是在定义 user_params 吗?