2017-10-13 12 views
1

Mon utilisateur donne ses informations universitaires sous forme de paramètre simple et les envoie au serveur.Ruby Titleize Entrée de formulaire simple

<div class="col-xs-12 col-s-4 col-sm-4"> 
    <%= simple_fields_for :users do |r| %> 
    <%= r.input :university, required: false, placeholder: "University", label: false %> 
    <% end %> 
</div> 

Comment puis-je titrer l'entrée param que l'utilisateur me donne?

J'ai essayé

<%= r.input :university.titleize, required: false, placeholder: "University", label: false %> 

mais il ne fonctionne pas.

Répondre

1

Le premier paramètre sur l'entrée reçoit l'attribut utilisateur pour lequel générer l'entrée, donc, ce n'est pas l'endroit pour enchaîner la méthode titleize.

Ce que vous pouvez faire est de modifier la valeur envoyée, avant d'enregistrer l'enregistrement, ou toute action que vous pourriez effectuer. À titre d'exemple, si vous envoyez les données à une méthode de création, vous pouvez le modifier après avoir créé l'utilisateur, et l'enregistrer dans la base de données, comme:

def create 
    @user = User.new(user_params) 
    @user.university = @user.university.titleize 
    ... 
+0

Oh ok je ne savais pas que. Je vois, donc je dois vraiment le changer du côté du serveur. Je vais l'essayer. –

+0

Oui, vous pouvez ajouter plus d'informations à la question sur ce que vous essayez de faire, n'est toujours pas clair. –

1

Si vous essayez de titleize le texte Sur le client après que l'utilisateur l'a tapé, vous devrez écrire un gestionnaire javascript pour manipuler le DOM sur un déclencheur d'événement (peut-être sur le flou?). D'autre part, si vous essayez de titrer le texte avant de le stocker dans votre base de données, vous devrez le faire sur le serveur. Convertissez le texte saisi par l'utilisateur en version titrée avant de lui attribuer l'enregistrement que vous mettez à jour.

0

Vous pouvez également essayer de cette manière dans votre contrôleur:

user_params[:university] = user_params[:university].titleize 
@user = User.create!(user_params)