2013-07-22 59 views
1

我有一个注册表单,它需要一个用于条款服务的复选框。我忘了在最初的脚手架上添加该栏。我以后不怎么做。请帮我解决问题。以注册形式添加复选框

回答

2

为此,您可以添加新的迁移,以将新列作为布尔字段添加到用户表中。 http://guides.rubyonrails.org/migrations.html

rails g migration AddTermsAcceptedToUsers 

它会在您的db/migrate文件夹中迁移文件。现在您需要将代码添加到它。

class AddTermsAcceptedToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :terms_accepted, :boolean, :default => false 
    end 
end 

然后做rake db:migrate

现在你的用户表有一列为terms_accepted。然后将其添加为attr_accesible

attr_accessible :terms_accepted. 

现在使用此字段并将其显示为注册页面中的复选框。

<%= f.check_box :terms_accepted%> 
+1

在Rails 4中没有更多的attr_accessible。如果你想使用它 - 添加protected_attributes Gem到Gemfile –

1

您可以为模型中的条款和条件字段创建属性acessor。 例如

class User < ActiveRecod::Base 
attr_accessor :terms_and_conditions 
end 

和形式

<%=form_for(@user) do |f|%> 
<%=f.check_box :terms_and_conditions %> 
<% end %> 

或者


你可以采取积极的记录 “接受” 方法的帮助。请检查http://guides.rubyonrails.org/active_record_validations.html

的 方法这验证是非常具体的Web应用程序和这个“接受”并不需要在数据库中记录的任何地方(如果你没有为它的字段,助手将只创建一个虚拟属性)。

class User < ActiveRecord::Base 
    validates :terms_and_conditions, acceptance: true 
end 
0

要添加/更新Bachans的回答,在轨道4,5你会怎么做:的

# User Controller 
    private 
    def user_params 
     params.require(:user).permit(:name, :email, :terms_accepted) 
    end 

代替

# User model 
attr_accessible :terms_accepted 

希望工程!