2012-04-23 46 views
0

在我的Rails 3.2應用程序中,我有一個包含「條款和條件」複選框的註冊表單。形式看起來是這樣的:以Rails的形式驗證非模型字段

<%= form_for @user do |f| %> 
    <!-- Error message stuff --> 
    <%= f.text_field :email %> 
    <!-- More fields... --> 
    <%= text_field_tag :terms_and_conditions, false, "true" %> 
<% end %> 

爲了確保用戶檢查複選框,我在我的控制器下面的代碼:

unless params[:terms_and_conditions] == "true" 
    @user.errors[:base] << "You must check the 'Terms and Conditions' checkbox" 
end 

但是,當我打電話@user.save(或@user.valid?),它似乎清除了這個錯誤信息。我知道我可以使用@user.errors.empty? && @user.save,但我覺得很奇怪,save方法不關心我剛添加的錯誤消息。有沒有更好更優雅的方式來做到這一點?

+0

在控制器操作中,或者在您渲染或重定向後,@ user.save返回false。你可以在控制器動作 – naren 2012-04-23 19:05:55

回答

2

Rails提供驗證確認器。這對你的情況是完美的。有關更多信息,請參閱docs

+0

中發佈渲染代碼/要點哦,真棒 - 我不知道這個。謝謝! – 2012-04-23 19:18:02

+0

不止歡迎! – lucapette 2012-04-23 19:29:41