我遇到了用于用户注册的Rails表单的问题。单击按钮时,没有任何反应。控制台中未记录任何内容,未创建任何内容且页面保持不变。这是查看users / new.html.erb:
<section>
<div class="container">
<div class="row">
<%= form_for(@user) do |f| %>
<%= f.text_field :username, :placeholder => "User name" %>
<%= f.email_field :email, :placeholder => "Email" %>
<%= f.password_field :password, :placeholder => "Password" %>
<%= f.submit "Create an account" %>
<% end %>
</div>
</div>
</section>
这是控制器。
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
session[:user_id] = @user.id
redirect_to '/'
else
redirect_to '/register'
end
end
private
def user_params
params.require(:user).permit(:username, :email, :password)
end
我已经设置了以下路线:
resources :users
get 'register' => 'users#new'
最后我的用户迁移(模型有has_secure_password)
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :username
t.string :email
t.string :password_digest
t.timestamps null: false
end
end
end
答案 0 :(得分:0)
您未在失败案例中记录任何内容(else
操作中的create
),并且您正在重定向而不是渲染,因此您将获得新的{{1}每次都不是显示现有的@user
,而是包含它可能包含的任何错误。
将您的@user
更改为:
else
我不确定您是否执行在else
logger.debug @user.errors.full_messages
render :new
end
视图中有任何错误处理代码,但即使您不这样做,上述内容也至少会为您记录错误。