[RUBY] So löschen Sie die Fehlerbündelung

【Überblick】

1. Schlussfolgerung </ b>

2. So löschen Sie die Fehlerbündelung </ b>

3. Wo es stecken bleibt </ b>

  1. Fazit

Verwenden Sie validiert </ b>, .errors.any </ b> und .errors.full_messages.each </ b>!

  1. So löschen Sie die Fehlerbündelung

Stellen Sie zuerst die Validierung für das Modell ein!

app/models/buy_item


  with_options presence: true do
    validates :name
    validates :date
 end

Mit With_options können Sie die Präsenz festlegen: true (Leerzeichen sind nicht zulässig) von do bis end auf einer Seite. In diesem Fall sind die Leerzeichen in der Namens- und Datumsspalte unbrauchbar!

Und in der Steuerung ist es wie folgt.

controllers/buy_items_controller.rb


 def create
    @buy_item = BuyItem.new(buy_item_params)
    if @buy_item.save
      redirect_to root_path
    else
      render :new
    end
  end

Wenn es gespeichert ist, wird es zur obersten Seite verschoben. Wenn etwas nicht stimmt und nicht gespeichert wird, springt das Rendern zur neuen Ansicht. Weil ich folgendes machen möchte.

views/buy_items/new.html.erb


 <%= render 'public/error_messages', model: f.object %>

Wenn Sie auf diese Weise zur neuen Ansicht von buy_items (render: new) springen, werden Sie zu dem Programm weitergeleitet, für das die Fehleranzeige festgelegt ist. f.object ist | f | von @buy_item in form_wtih gesetzt und der Inhalt von @buy_item wird entfernt!

Der Inhalt (Fehlersätze) von'public / error_messages 'lautet wie folgt.

view/public/_error_messages


<% if model.errors.any? %>
 <div class="error">
  <ul>
     <% model.errors.full_messages.each do |message| %>
      <li class='error-message'><%= message %></li>
    <% end %>
  </ul>
</div>
<% end %>

Ich verwende model, weil ich zusätzlich zum Modell buy_item einen Benutzer verwende. Sie können Validierungsfehlerinhalte auf alle Modelle anwenden. Zusätzlich wird jeder Fehlerinhalt von jeder Methode extrahiert und von <% = message%> angezeigt!

Die URL unten hat mir sehr geholfen!

Referenz-URL: Ausstellen einer Rails-Fehlermeldung Validierungsfehler

  1. Was ich hier gelernt habe (im Fehlerfall verwendet)

Ich habe das Modell in @user oder @buy_item geändert und ein Problem erhalten, weil der @ user-Fehler nicht aufgetreten ist oder die NameErrormethod aufgetreten ist. Darüber hinaus wurde f.object ohne Berechtigung in eine Instanzvariable umgewandelt, was einen zusätzlichen Fehler verursachte. Wenn Sie zwei Controller haben und diese mit dem Index des angegebenen Controllers anzeigen möchten, können Sie auch "Controller-Name / Aktionsname" rendern. Da es jedoch nur angezeigt wird, war es ein blinder Punkt, dass ich die darin enthaltenen Daten beschreiben musste.

Recommended Posts