视图文件中的自定义字段验证消息

时间:2016-09-27 05:47:14

标签: ruby-on-rails validation ruby-on-rails-4

我在控制器中有一个方法来检查数据库表中是否已存在电子邮件。 我需要在电子邮件文本框下面显示类似于图像的验证消息,而不是使用flash [:error] ="メール変更に失败しました!"。

验证在控制器中完成,我们在其中检查email-Id

enter image description here

控制器方法:

def update_email
  @user_login = UserLogin.find(params[:id])

  if @email_check = UserLogin.where(:email => params[:update_email]).first   
    redirect_to "/works?utf8=%E2%9C%93&search=&commit=%E6%A4%9C%E7%B4%A2", notice: params[:id] + 'idの メールは既に存在します!' 
  else
        @update_email = UserLogin.where(:user_id =>  @user_login ).update_all(:email => params[:update_email])

  if @update_email
    UserLogin.where(:user_id => params[:id]).update_all(:updated_at => Time.zone.now)
    flash[:success] = "メール変更!"
    redirect_to works_path
  else
    flash[:error] = "メール変更に失敗しました!"
    redirect_to works_path
  end
  end 
  end

index.html.erb:

<%= form_for :works,:id => "email_validate", :url => {:action => 'update_email',:id => userdetails.user_id} do  %>
<td><%= email_field_tag :update_email,nil,:id =>"email",:class => "form-control" ,:placeholder =>'新しいメールアドレス。。。。', required: true %><br/></td>
<td><%= button_to("変更", {}, {:onclick => "return confirm('メールをリセットします。よろしいでしょうか?')", :class => "btn btn-primary", :method => :update_email, :remote => true}) %></td>
<% end %>

1 个答案:

答案 0 :(得分:0)

In controller:

    flash[:notice] = 'メールは既に存在します!!'

    redirect_to works_path

In view:

    <%= form_for :maintanance_works, :url => {:action => 'update_email',:id => userdetails.user_id} do  %>
      <td>
        <%= email_field_tag :update_email, nil,:class => "form-control" ,:placeholder =>'新しいメールアドレス。。。。', required: true %><br/>
        <p class="notice" style="color:red;font-size:12pt;">
        <%= flash[:notice] %></p>
      </td>
      <td>
        <%= button_to("変更", {}, {:onclick => "return confirm('メールをリセットします。よろしいでしょうか?')", :class => "btn btn-primary", :method => :update_email, :remote => true}) %></td>
    <% end %>

**Display flash message below your textbox**