如何以此红宝石形式制作错误通知?

时间:2017-06-21 14:45:15

标签: ruby-on-rails ruby forms

如果有人留空,等等,我怎么能发出错误通知?

我尝试了许多代码,他们要么没有工作要么失败了......我甚至安装了一颗宝石,但直到现在都没有工作......请帮助提出想法/解决方案

<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 %>

控制器:

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

3 个答案:

答案 0 :(得分:4)

  • Rails只能在您提交表单时进行验证。在这种情况下,您可以查看this guide
  • 在其他情况下,如果您希望在用户输入输入时立即显示验证消息,则必须使用Javascript对其进行验证。您也可以使用Jquery validation plugin来执行此操作。

希望它的帮助:)

答案 1 :(得分:1)

如果要在提交https://jqueryvalidation.org/documentation/之前检查字段是否为空类型验证,请使用jquery验证。点击此链接。

或者如果您可以在提交时验证字段,那么在控制器的创建或更新操作中,您可以从参数中检查该字段是否为空。然后你可以显示像这样的flash消息

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

或者您可以在此处http://guides.rubyonrails.org/active_record_validations.html

添加模型级验证

答案 2 :(得分:0)

您可以使用Active Record Validations

如果您有一个名为User的模型,那么您可以使用validates方法指定要对状态进行验证的属性,并将presence设置为true,这将检查该字段在表格上已经填写,如果只有空格。

例如:

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

对于您的控制器:

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

使用flash[:error]重定向到新用户路径为&#34;无效值&#34;。

供您查看:

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