0

さまざまな入力値を検証しようとしています。たとえば、「ドメイン」と「電子メール」。両方に値が必要で、一意である必要があります。だから私はそれらを検証しようとします

validates :domain,
          :presence => true,
          :uniqueness => { :case_sensitive => true }
validates :email,
          :presence => true,
          :uniqueness => { :case_sensitive => true }

しかし、フラッシュ メッセージを表示すると、次の 4 つのエラーが表示されます。

["Domain can't be blank", "Domain has already been taken", "Email can't be blank", "Email has already been taken"]

徐々にチェックすることはできますか?入力フィールドに値がない場合、ユーザーは

["Domain can't be blank"]

ただし、入力フィールドに値があり、一意でない場合、ユーザーは

["Domain has already been taken"]

どうすれば実装できますか?

編集

エラーメッセージを出力するコードは次のとおりです。

<% [:error].each do |key| %>
  <% if flash[key] %>
    <div class="<%= key %>" id="flash">
      <%= flash[key] %>
    </div>
  <% end %>
<% end %>

そして、ここでエラーを作成するコントローラー:

def create

  respond_to do |format|
    # save form data
    @login = Login.new(params[:login])

    # if validation fails, throw error messages
    if !@login.save
      flash[:error] = @login.errors.to_a
    end

    # redirect to landingpage
   format.html { redirect_to :root }

  end

end
4

1 に答える 1