2010-06-25 91 views
1

我有任務的陣列,用戶必須填寫,
它看起來是這樣的:Ruby on Rails的模型驗證與陣列

<% 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 %> 

現在我需要在列表中的一個字段執行驗證不是空的。 當它是我用模型 執行驗證這樣只有一個字段:

validates_presence_of:名稱,:消息任務名稱不能爲空

但現在當我使用數組我不知道我怎麼能執行它
我將竭誠爲一些指導在這個問題

感謝

回答

1

試試這個:

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

這是工作,但我一直在尋找從模型和不符合使用像validates_presence_of梅索德 – 2010-06-25 16:39:54

+0

對不起控制器做驗證,但我不明白你想要什麼。你在這裏稱之爲模型的有效方法。這幾乎總是從控制器中調用。 – jigfox 2010-06-25 17:20:06