2017-06-21 7 views
1

誰かが空のスペースを離れるとき、どのように私はなど、エラー通知を行うことができます...このルビーフォームでエラー通知を作成するにはどうすればよいですか?

私はenumerousコードを試してみましたが、彼らは仕事をしたり失敗しませんでしたどちらか...私も宝石をインストールしたが、何も今まで働きました。

class UsersController < ApplicationController 

    def new 
    end 

    def create 
    user = User.new(user_params) 
    if user.save 
     session[:user_id] = user.id 
     redirect_to '/' 
    else 
    flash[:error] = 'invalid value' 

    end 
    end 

private 

    def user_params 
    params.require(:user).permit(:NumeroEmpregado, :nome, :password, :password_confirmation) 
    end 
end 
+2

をフィールド。バリデーションエラーを表示するには、このリンクhttp://guides.rubyonrails.org/active_record_validations.html#displaying-validation-errors-in-viewsを参照してください。 –

+0

セミオフトピックですが、インデントと 'div'/'form'ブロックです。 '<% end %>'は3行上に配置しなければなりません。コードを正しく字下げしていれば、この誤りは明らかでした。 –

+0

完了@TomLord観測のために –

答えて

0

あなたはActive Record Validationsを使用することができます..

<div class="jumbotron" 
    <div class="container"> 

    <h2>Signup</h2> 


<%= form_for :user, url: '/users' do |f| %> 
    Número de Empregado: <br> 
    <%= f.number_field :NumeroEmpregado %><br> 
    Primeiro e Último Nome: <br> 
    <%= f.text_field :nome %><br> 
    Password: <br> 
    <%= f.password_field :password %><br> 
    Confirmação Password: <br> 
    <%= f.password_field :password_confirmation %><br> 


    <%= f.submit "Submit" %> 

    </div> 
</div> 

<% end %> 

コントローラアイデア/ソリューションを助けてください。

あなたはユーザーと呼ばれるモデルを持っている場合は、あなただけ持っている場合にも、フォーム上のフィールドが満たされた場合、これはチェックします、validates方法を使用してtruepresenceを設定有無を検証するために属性を指定することができますが空白。例えば

class User < ApplicationRecord 
    validates :nome, presence: true 
    ... 

あなたのコントローラの場合: "無効な値" としてflash[:error]を持つ新しいユーザー・パスに

def create 
    user = User.new(user_params) 
    if user.save 
    session[:user_id] = user.id 
    redirect_to '/' 
    else 
    flash[:error] = 'invalid value' 
    redirect_to new_user_path 
    end 
end 

リダイレクト。あなたのビューのために

:あなたのフォームを送信する際

<% if flash[:error] %> 
    <div class="error"> 
    <%= flash[:error] %> 
    </div> 
<% end %> 
+0

私はすでにあなたがしていないときに通知する4つのものすべてを提出したかどうかをチェックするdef user_paramsでこれを行っています!! 私はこのatmが好きです: 'else redirect_to '/ signup' end' –

+0

コントローラーを質問に追加してください。 –

+0

完了! –

4
  • Railsはのみ検証することができます。この場合、this guideをチェックアウトすることができます。
  • その他の場合、ユーザーが入力を入力したときに確認メッセージをすぐに表示するには、Javascriptを使用して検証する必要があります。また、それを行うにはJquery validation pluginを使うことができます。

は、その助けを願っています:)

1

を確認したい場合は、フィールドの前に、このリンクをたどってhttps://jqueryvalidation.org/documentation/提出空のタイプの検証である場合は、jqueryの検証を使用する必要があります。

送信時にフィールドを検証しても問題がない場合は、コントローラの作成または更新アクションでフィールドが空であるかどうかを確認できます。あなたはこの

flash[:notice] = 'valid value' 
flash[:error] = 'invalid value' 

のようなフラッシュメッセージを表示することもできますし、その上でモデルレベルの検証を追加することができ、私はあなたが足場を生成し、フォームの動作を確認することをお勧めここhttp://guides.rubyonrails.org/active_record_validations.html

+0

私はこれでした: 'DEF user.save セッションの場合 ユーザー= User.new(user_params) を作成する[:user_idを] = user.id redirect_to '/' 他 フラッシュ[:エラー] =「無効な値を頭をレンダリング、 '作成がUserController番号が見つかりませんテンプレート::「end' エンド はこのエラーを得た –

+0

no_content' DEF ユーザー= User.new(user_params) を作成する場合user.save セッション[:user_idを] = user.id redirect_to root_path、通知: '有効な値' else flash [:error] = '無効な値' redirect_to action: "new" end end あなたのelse部分のリダイレクトパスは忘れてしまいました –

関連する問題