hyperstack-org / hyperstack-org/hyperstack
ActiveModel validators on the client
- Langage dominant
- JavaScript
- Étoiles
- 538
- Forks
- 41
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
ActiveModel provides a standard way to validate attributes, and it would be conveniently to use it on the client. Instead of validating a full record we can validate single attributes using validators directly:
```
def validate_attribute attr
value = send attr
self.class.validators_on(attr).each do |validator|
validator.validate_each(self, attr, value)
end
errors[attr].empty? ? nil : errors[attr]
end
```
And then validate user input in forms via existing model validators, something like that:
```
before_mount do
@user = User.new
end
render do
# Material UI
TextField(id: 'name', label: 'Name', required: true,
error: !@user.validate_attribute(:name).nil?,
helperText: @user.validate_attribute(:name)&.join("; ") || 'enter your name'
).
on(:change) do |evt|
@user.name = evt.target.value
end
end
```
Currently the model validators work only on the server, and aren't visible on the client, i.e. validators_on(attr) returns nil on the client. Is there some simple way to get it on the client too?
Guide de contribution
Ouvrir le guide de contribution
Évaluation
Cette issue n'a pas encore été évaluée.