我有一个支持表单,用户可以在其中发送消息。此支持表单应该有一个复选框,并且只有在激活了复选框后才会发送消息。到目前为止,我的support.rb模型(只是相关部分):
class Support
include ActiveModel::Validations
attr_accessor :dataprotection
validates :dataprotection, :acceptance => true
end
据我所知,我甚至不需要attr_accessor引用,因为它创建了一个虚拟属性,如果:dataprotection不是我的模型的一部分,所以在添加:dataprotection后我还没有完成迁移。无论如何,我不会将消息和数据保存在数据库中,只是将其发送到电子邮件地址。
视图是(再次只是相关部分,我使用haml):
= form_for :support, :url => { :action => "create" }, :html => { :method => :post } do |f|
= render 'shared/error_messages_support'
%div
= check_box_tag 'dataprotection'
= label_tag(:dataprotection, simple_format(t"support.dataprotection"))
表单显示正确,同时出现复选框并且可单击。但是如果用户没有检查它,无论如何都会发送表单,没有错误信息。
如果未勾选方框,我需要更改哪些内容才能收到错误消息?
我的控制器是
class SupportsController < ApplicationController
def new
@support = Support.new(:id => 1) # id is used to deal with form
end
def create
@support = Support.new(params[:support])
if @support.save
flash[:success] = t "support.flashsuccess"
redirect_to(root_path)
else
render 'new'
end
end
end
我的Gemfile是:
ruby '2.0.0'
source 'http://rubygems.org'
gem 'rails', '4.0.0'
gem 'jquery-rails', '2.1.1'
gem 'capistrano', '2.14.1'
gem "therubyracer", '~> 0.11.4'
gem 'carrierwave', '0.8.0'
gem 'haml', '~> 4.0'
gem 'mysql2', '0.3.11'
gem 'rmagick', '2.13.2'
gem 'fancybox2-rails', '~> 0.2.8'
gem 'sitemap_generator', '3.4'
gem 'whenever', '0.7.3', :require => false
gem 'will_paginate', '3.0.5'
gem "friendly_id", "~> 5.0.3"
gem 'turbolinks'
gem 'jquery-turbolinks'
gem 'protected_attributes'
gem 'globalize', '~> 4.0.2'
gem 'sass-rails', '~> 4.0.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'uglifier', '>= 1.3.0'
group :development do
gem 'rspec-rails', '2.13.2'
gem 'annotate', '~> 2.4.1.beta'
gem 'faker', '0.9.5', :require => false
gem "database_cleaner", "~> 1.0.1"
gem 'debugger'
end