【发布时间】:2016-05-26 20:35:58
【问题描述】:
我是 Rails 初学者,我正在尝试创建一个带有注册页面的网站,该页面在我设置的数据库中创建用户。我(似乎)正确安装了设计,在创建第一个用户对其进行测试后,一切似乎都正常。但是,如果我尝试创建另一个用户,它就不起作用。在页面上单击创建用户后,它会返回主页,没有任何错误或任何东西。但是当我检查数据库中的用户表时,我可以看到用户没有被创建。
当我将第一个用户 id(主键)从 2 更改为 1 时,我让它工作了。新用户的 id 是 3。所以看起来无论出于何种原因,设计想要跳过一个步骤,或者不知何故试图插入两次或什么的。但是再一次,即使在我让新用户创建之后,如果我再试一次,它也不起作用。
这是创建请求期间rails服务器的打印输出:
Started POST "/users" for ::1 at 2016-05-26 16:08:26 -0400
Processing by RegistrationsController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"zl39rAOLLSRoEZUIcX574BlJtNgySlz/d5FRNIg3ZjuvcdQJxOVLDdWPAp3jQqhT3g1H0PCexFdHdmAQD81CKQ==", "user"=>{"first_name"=>"asdasd", "last_name"=>"asdasd", "email"=>"asdasd@asda.com", "password"=>"[FILTERED]", "confirm_password"=>"[FILTERED]"}, "instructor"=>"1", "commit"=>"Create my account"}
User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 4 ORDER BY `users`.`id` ASC LIMIT 1
Redirected to http://localhost:3000/
Filter chain halted as :require_no_authentication rendered or redirected
Completed 302 Found in 39ms (ActiveRecord: 0.5ms)
这是我的 UsersController 文件:
class UsersController < ApplicationController
def index
@users = User.all
end
def show
@user = User.find(params[:id])
end
def edit
@user = User.find(params[:id])
end
def new
@user = User.new
@user.active = 1
end
def create
@user = User.new(sign_up_params) # Not the final implementation!
if @user.save
redirect_to :action => :index
else
render 'signup'
end
end
def destroy
@user = User.find(params[:id]).destroy
if @user.destroy
redirect_to users_path
else
render 'index'
end
end
private
def user_params
params.require(:user).permit(:first_name, :last_name, :email, :instructor, :active)
end
end
这是我的 new.html.erb 文件:
<h1>New User</h1>
<%= render 'form' %>
<%= link_to 'Back', users_path %>
<div class="row">
<div class="col-md-6 col-md-offset-3">
<%= form_for(@user) do |f| %>
<%= f.label :first_name %>
<%= f.text_field :first_name %>
<%= f.label :last_name %>
<%= f.text_field :last_name %>
<%= f.label :email %>
<%= f.email_field :email %>
<%= check_box_tag(:instructor) %>
<center><%= label_tag(:instructor, "I want to be an instructor") %></center>
<br>
<br>
<%= f.label :password %>
<%= f.password_field :password %>
<%= f.label :confirm_password %>
<%= f.password_field :confirm_password %>
<%= f.submit "Create my account", class: "btn btn-primary" %>
<% end %>
</div>
</div>
感谢您提供的任何帮助
【问题讨论】:
-
提交时是否登录?如果您是,设计方法
require_no_authentication将重定向您。 -
Devise 的全部意义在于它为视图、控制器等的身份验证提供了现成的解决方案。如果您想作为初学者学习如何制作身份验证系统,请不要从破解 Devise 开始.代码非常复杂,因为它需要具有疯狂的灵活性。相反,请查看 railstutorial.org 之类的内容
-
Devise 创建用户后会自动登录吗?
标签: ruby-on-rails ruby ruby-on-rails-3 devise