2013-07-22 108 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 

希望工程!