私はレールとルビーのチュートリアルを読んでいて、最初のプロジェクトを開始しました。すべてうまくいっていますが、新しいユーザーの検証エラーを示す問題があります。これは私のコントローラのコードです:レール上に検証エラーを表示できないようです
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
そして、これは私のフォームです。ニックネーム1以外のすべての入力を省略しています。なぜなら、これで検証をテストしているからです。
<%= 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 %>
私はちょうどそれが働いているかどうかを確認するために最初に関連するエラーを表示し、それが動作するかどう私を疑うになるだろうどんなIfsのを避けます。私は、コンソールによって、新規ユーザーを作成し、それは文句を言わない保存し、別のと同じニックネームでそれを保存しようとすると
class User < ApplicationRecord
has_many :books
has_secure_password
validates :nickname, uniqueness: true
end
、その検証が正常に動作します:クラスの検証があります。しかし、ビューにエラーは表示されません。サインアップフォームに戻るだけです。私はruby 2.2.6と5.0.1を使用しています。もし私が何かが不足しているなら、私に知らせてください。検証エラーが含まれてい
def create
@user = User.new(user_params)
if @user.save
redirect_to ''
else
render 'new'
end
end
あなたをリダイレクトしない緩い@user
オブジェクト:代わりにリダイレクトの
ありがとう、それは今働いています。 –
@Franciscoあなたが大歓迎です。私の答えが助けになった場合は、回答の横にあるチェックマークをクリックして、それを透明にすることを忘れないでください。 –
これは完全に動作しますが、私は軽微な問題があります。妥当性検査が合格しなくなり、新しいエラーを表示すると、URLには "website.com/user"が表示されます。索引アクションが存在しないため、リロードするとページが見つかりません。どのようにしてアドレスバーに表示されるURLを変更できますか? –