2017-02-22 2 views
1

私はレールとルビーのチュートリアルを読んでいて、最初のプロジェクトを開始しました。すべてうまくいっていますが、新しいユーザーの検証エラーを示す問題があります。これは私のコントローラのコードです:レール上に検証エラーを表示できないようです

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オブジェクト:代わりにリダイレクトの

答えて

2

newアクションテンプレートをレンダリングします。そのため、彼らは視界には見えません

+0

ありがとう、それは今働いています。 –

+1

@Franciscoあなたが大歓迎です。私の答えが助けになった場合は、回答の横にあるチェックマークをクリックして、それを透明にすることを忘れないでください。 –

+0

これは完全に動作しますが、私は軽微な問題があります。妥当性検査が合格しなくなり、新しいエラーを表示すると、URLには "website.com/user"が表示されます。索引アクションが存在しないため、リロードするとページが見つかりません。どのようにしてアドレスバーに表示されるURLを変更できますか? –

関連する問題