2013-04-26 32 views
5

您如何簡單地驗證複選框是否在軌道中被選中? 該複選框用於最終用戶協議。它位於一個模式窗口中。如何簡單地驗證軌道中的複選框

可以說我有複選框:

<%= check_box_tag '' %> 


在哪裏,我應該怎麼驗證呢?

我在這裏看到了關於複選框驗證的大多數帖子,但沒有一個適合我的需求。

回答

14

添加

validates :terms_of_service, :acceptance => true 

到您的模型應該這樣做。請查看here瞭解更多詳情和選項。

然而,如果接受這些條款是不是你的模型形式的一部分,你應該使用客戶端驗證,即JavaScript中,像這樣(jQuery中):

function validateCheckbox() 
{ 
    if($('#checkbox').attr('checked')){ 
     alert("you have to accept the terms first"); 
    } 
} 

您可以添加腳本文件到您的看法是這樣的:

<%= javascript_include_tag "my_javascipt_file" %>

和觸發功能上點擊:

<%= submit_tag "Submit", :onclick: "validateCheckbox();" %>

編輯:你可以指定一個ID到你的複選框,像這樣:check_box_tag :checkbox。 HTML將如下所示:<input id="checkbox"有關更多選項,請參閱these examples

+0

在這種情況下,我將如何「命名」複選框? – geirmash 2013-04-26 13:50:55

+0

@ user2019492 - 請參閱編輯 – kostja 2013-04-26 14:00:15

+2

kostja提供了一個很好的解釋,但是我個人更喜歡在客戶端和我的控制器中進行接受驗證,然後如果接受我提交當前時間讓我們說一個用戶模型到它的「 accepted_conditions_at「屬性,這樣我可以輕鬆維護並讓用戶重新接受我的條件條件,如果他們由於某種原因而更改 – dennis 2013-04-26 14:06:22