utworzyć prostą klasę do zawijania żądaj parametrów i użyj ActiveModel::Validations
.
# defined somewhere, at the simplest:
require 'ostruct'
class Solve < OpenStruct
include ActiveModel::Validations
validates :foo, :bar, :presence => true
# you could even check the solution with a validator
validate do
errors.add(:base, "WRONG!!!") unless some_correct_condition
end
end
# then in your controller
def your_method_name
@solve = Solve.new(params[:solve])
if @solve.valid?
# yayyyy!
else
# do something with @solve.errors
end
end
Daje to korzyści sprawdzania poprawności, podobnie jak model, wraz z komunikatami o błędach i18n i tak dalej.
EDIT: jak na swój komentarz, aby potwierdzić wszystko może zrobić:
class Solve < OpenStruct
include ActiveModel::Validations
# To get the i18n to work fully you'd want to extend ActiveModel::Naming, and
# probably define `i18n_scope`
extend ActiveModel::Naming
validate do
# OpenStruct maintains a hash @table of its attributes
@table.each do |key, val|
errors.add(key, :blank) if val.blank?
end
end
end
Sprawdź poprawność przy pomocy Javascript. – MurifoX
@MurifoX nie jest wystarczająco dobry, co jeśli użytkownik dezaktywował javascript lub mimo to wysyła żądanie? Sprawdzanie poprawności musi również odbywać się po stronie serwera. – Intrepidd