在我的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
方法不關心我剛添加的錯誤消息。有沒有更好更優雅的方式來做到這一點?
在控制器操作中,或者在您渲染或重定向後,@ user.save返回false。你可以在控制器動作 – naren 2012-04-23 19:05:55