我創建了一個窗體(「Form1」)和一個驗證以及它。然後我爲另一個目的創建了一個不同的表單(「Form2」),但是當我提交Form2時,觸發了Form1的驗證方法這個驗證爲什麼應用?
Form2和Form1都被提交到同一個數據庫,但我沒有想驗證將適用於他們兩個,因爲屬性/方法名稱的形式
表1
<%= form_for(@guess) do |f| %>
<% if @guess.errors.any? %>
<div class="field">
<%= f.label(:math, "I think many students will fail Math") %>
<%= f.check_box(:math) %> </br>
</div>
<div class="field">
<%= f.label(:french, "I think many students will fail French") %>
<%= f.check_box(:french) %> </br>
</div>
我做同樣的6個科目不同。學生需要在模型中選擇3門科目可能創建失敗..
驗證爲Form1中 Guess.rb
validates_inclusion_of :possible_assessment_failures, :in => 1..3, :message => "You must check off 1,2 or 3 different assessments for question 1"
...
def possible_assessment_failures
[math, french, english, science, history, geography].select{|x| x }.count
end
評論:我認爲這驗證得到觸發,因爲在形式方法( :法語:數學等)均在驗證陣列[數學,法國...]在...我猜這是錯誤的
-
窗體2
在控制器.... @teacher = Guess.new
視圖...
<div class="field">
<%= f.label(:MrSmith, "MrSmith") %>
<%= f.select:MrSmith, 1..6 %> </br>
</div>
那麼,爲什麼Form1的驗證獲取調用時,我提交窗口2?
如前所述,我想確認接到電話爲Form1,因爲陣列中的方法驗證(對象
[math, french, english, science, history, geography].select{|x| x }.count
是在形式
<%= f.check_box(:math) %>
命名的,即名稱所以如果我的Form2有不同的屬性(如老師的名字
<%= f.select:MrSmith, 1..6 %>
我做不明白爲什麼這會觸發對其中的科目名稱(數學,法語等)的驗證?
我認爲我的想法完全錯誤。那麼是什麼觸發了驗證,我如何得到它不適用於form2?
謝謝你,但如果我有一個不同的驗證方法的不同的形式。如何指定哪種驗證適用於哪種形式...?我在哪裏寫:validate => false? – Leahcim
我試過form_for(@teacher):validate => false do | f |它給了我一個錯誤消息 – Leahcim
看到我的編輯,:驗證=>錯誤不是你的問題的答案我只是想澄清,它可以保存沒有驗證 – spike