2010-06-25 5 views
1

J'ai un ensemble de tâches que l'utilisateur doit remplir,
Son ressemble à ceci:rubis sur des rails Modèle de validation avec des tableaux

<% form_for(@task) do |f| %> 
<%= error_messages_for 'task' %> 
    <ul> 
    <li><label>Task Name</label> <input type=text name="task_list[]"> </li> 
    <li><label>Task Name</label> <input type=text name="task_list[]"> </li> 
    <li><label>Task Name</label> <input type=text name="task_list[]"> </li> 
    </ul>         
<% end %> 

Maintenant je dois effectuer une validation à la liste un champ n'est pas vide. Quand il était seul champ j'utilisé pour effectuer la validation dans le modèle comme ceci:

validates_presence_of: nom,: un message Nom de la tâche ne peut pas être vide

Mais maintenant, quand j'utilise un tableau Je ne sais pas comment je peux l'exécuter
je serai heureux pour quelques conseils dans ce numéro

Merci

Répondre

1

Essayez ceci:

class TasksController < ApplicationController 
    def create 
    unless params[:task_list].empty 
     @task_list = returning Array.new do |task_list| 
     params[:task_list].each do |task_name| 
      task = Task.new 
      task_list << task if task.valid? 
     end 
     end 
     if @task_list.empty? 
     # do whatever should be done if no valid task was found 
     else 
     # do whatever should be done if at least on task was valid 
     # i.e. saving each task: 
     @task_list.each(&:save) 
     end 
    end 
    end 
end 
+0

Cela fonctionne, mais je cherchais à faire la validation du modèle et non dans le contrôleur avec l'utilisation de quelque chose comme validates_presence_of Methode –

+0

Désolé, mais je ne comprends pas ce que vous voulez. Vous appelez ici la méthode valide du modèle. Et cela est presque toujours appelé depuis le contrôleur. – jigfox

Questions connexes