我是一個Rails初學者,我正在嘗試使用創建用戶所創建的數據庫的註冊頁面創建一個站點。我正確安裝了設計(看起來),並且在創建第一個用戶來測試它之後,一切似乎都奏效了。但是,如果我嘗試創建另一個用戶,它不起作用。在頁面上點擊創建用戶後,它會返回到首頁,沒有任何錯誤或任何內容。但是,當我檢查我的數據庫中的用戶表,我可以看到用戶沒有創建。用Rails設計不能正確創建用戶
當我將第一個用戶標識(主鍵)從2更改爲1時,我得到了它的工作。而新用戶的標識是3.因此無論出於何種原因,devise想要跳過一個步驟或以某種方式嘗試插入兩次或其他東西。但是,再次,即使我得到了新用戶來創建,如果我再試一次,它不起作用。
這裏的鐵軌服務器的創建請求期間的打印輸出:
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"=>"[email protected]", "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>
感謝您的任何幫助,您可以提供
您是否在登錄時提交了?如果你願意,devise方法'require_no_authentication'會重定向你。 – Swards
Devise的重點在於它爲視圖,控制器等的認證提供了一個現成的解決方案。如果你想學習如何使一個認證系統成爲初學者,不要從黑客入侵開始。代碼非常複雜,因爲它需要具有瘋狂的靈活性。相反,請查看https://www.railstutorial.org – max
之類的東西設計是否在創建用戶後自動登錄? – tanerD