【问题标题】:Ruby on Rails Why isn't my create user working using bcyrpt gem?Ruby on Rails 为什么我的创建用户不能使用 bcyrpt gem?
【发布时间】:2015-04-16 02:42:49
【问题描述】:

在我的 Ruby on Rails 应用程序中,我刚刚开始尝试包括注册和登录。我首先运行了脚手架命令:

rails generate scaffold User name:string password_digest:string role:string

然后是rake db:migrate。这一切都很顺利,并为用户创建了所需的文件。在我的 gemfile 中,我安装了 gem 'bcrypt', '~> 3.1.7' gem,然后将以下内容添加到 user.rb 模型中。

用户.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

结束

但是由于某种原因,当我添加新用户时,我的表单没有保存详细信息,有人可以帮忙吗?

【问题讨论】:

    标签: ruby-on-rails ruby login authorization registration


    【解决方案1】:
    1. 控制台中是否显示任何错误?检查一下。
    2. 您在定义 user_params 吗?

    【讨论】:

    • 没有报错,也不知道是不是在定义user_params
    • 你必须在你的用户控制器中定义这样的东西:private def user_params params.require(:user).permit(:name, :password,:password_confirmation) end 这些被称为强参数。您需要告诉 rails 哪些参数允许用户写入。阅读:edgeapi.rubyonrails.org/classes/ActionController/…
    • 谢谢!!我以前有这个:def user_params params.require(:user).permit(:name, :password_digest, :role) end 所以缺少:password_confirmation
    • 这应该是评论而不是答案。
    • 我们到达了 cmets 中的答案部分。请检查@RailsOuter
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 2023-03-05
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2017-07-11
    相关资源
    最近更新 更多