Aus irgendeinem Grund, wenn ich einfaches Formular, um die Eingabe as: :check_boxes
zu präsentieren, wird die Validierung nicht angezeigt.Eingabe als Kontrollkästchen zeigt nicht Validierungsfehler
Ich habe die Validierung getestet sicherzustellen, dass es in Rails-Konsole funktioniert:
irb(main):001:0> d = Document.create
(0.0ms) BEGIN
(0.0ms) ROLLBACK
=> #<Document id: nil, documents: nil, documents_cache: nil, created_at: nil, updated_at: nil, request_id: nil, data_to_other: nil, data_from_id: nil, data_type_id: nil, data_tos: []>
irb(main):002:0> d.errors.full_messages.each { |msg| puts msg }
Data type Please select a format.
Data from Please select a format.
Data tos Please select some formats!
=> ["Data type Please select a format.", "Data from Please select a format.", "Data tos Please select some formats!"]
ich, dass die Validierung auch überprüfte Ich habe durch Umschalten der Eingabe wieder auf das Standardauswahlmenü und die Fehleranzeigen arbeite gut dort. Ich möchte jedoch, dass Benutzer mehrere Eingaben auswählen.
Hier sind einige Stücke des Puzzles:
Modell:
class Document < ActiveRecord::Base
validates :data_tos, :presence => { :message => "Please select some formats!" }
end
Formularansicht:
<%= simple_form_for @document do |f| %>
<%= f.error_notification %>
<div class="row">
<div class="col-lg-8 col-md-8 col-sm-8">
<%= f.input :data_tos, label: "To: ", collection: DataTo.order(:id),
as: :check_boxes, value_method: :name,
item_wrapper_class: 'checkbox-inline' %>
</div>
</div>
<% end %>
Controller:
class DocumentsController < ApplicationController
def new
@document = Document.new
end
def create
authorize Document
@document = Document.new(document_params)
respond_to do |format|
if @document.save
format.html { redirect_to @document, notice: 'Document was successfully created.' }
format.json { render :show, status: :created, location: @document }
else
format.html { render :new }
format.json { render json: @document.errors, status: :unprocessable_entity }
end
end
end
end
Was komisch ist, ist, dass es das '*' hinzufügt, um dem Benutzer mitzuteilen, dass das Eingabefeld erforderlich ist.
Bearbeiten: In anderen Feldern, in denen das Validierungsfeld angezeigt wird, gibt es eine Klasse mit dem Namen has-error
, die nach der Übermittlung generiert wird. Nicht sicher, warum das nicht auf dem Feld :check_boxes
geschieht.
Wenn etwas unklar ist oder ich weitere Informationen liefern muss, lass es mich wissen. Jede Hilfe würde sehr geschätzt werden!
Nachverfolgung - Sie können die leere Standardzeichenfolge mit ': include_hidden => false 'ausschalten – nkulig