1
我一直在閱讀rails和ruby教程,剛開始使用我的第一個項目。一切都很順利,但我有一個問題,顯示新用戶的驗證錯誤。這是我的控制器代碼:似乎無法在軌道上顯示驗證錯誤
class UsersController < ApplicationController
def new
@user = User.new
end
def create
@user = User.new(user_params)
if @user.save
redirect_to ''
else
redirect_to '/signup'
end
end
private
def user_params
params.require(:user).permit(:name, :lastname, :nickname, :email, :password)
end
end
這是我的形式。我省略了所有輸入,但暱稱之一,因爲我正在用它來測試驗證。
<%= form_for(@user) do |f| %>
<div class='form-group'>
<%= f.text_field :nickname, :placeholder => "User name", :class => "form-control", :required => true, :minlength => "2", :maxlength => "24" %>
<div class="text-danger">
<%= @user.errors[:nickname][0] %>
</div>
</div>
<% end %>
我只是顯示第一相關的錯誤,看看它的工作,並避免任何If語句時,我會懷疑它是否工作或沒有。類上的驗證是:
class User < ApplicationRecord
has_many :books
has_secure_password
validates :nickname, uniqueness: true
end
當我創建通過控制檯的新用戶,並嘗試將其與相同的暱稱作爲另一個它不會救人救,所以確認工作正常。但是在視圖中沒有顯示錯誤,它只是返回到註冊表單,這就是全部。我使用的是Ruby 2.2.6和Rails 5.0.1。如果我錯過了任何東西,請告訴我。
非常感謝,它現在正在工作。 –
@FranciscoRupto歡迎您。如果我的回答對您有幫助,請不要忘記將其標記爲已接受,方法是單擊答案旁邊的複選標記以將其從空心切換爲綠色 –
雖然這很有效,但我有一個小問題。如果驗證沒有通過,並呈現#new顯示錯誤,則網址顯示「website.com/user」。由於索引操作不存在,因此如果重新加載,它無法找到該頁面。我如何更改地址欄上顯示的網址? –