我一直在試圖添加一個帳戶給用戶幾天。rails設計:用戶和帳戶系統
我已經安裝Devise沒有問題,但現在我想添加一個公司名稱字段到我的註冊表格。
這裏是我的代碼:
應用程序/模型/ account.rb
class Account < ActiveRecord::Base
attr_accessible :name
has_many :users
accepts_nested_attributes_for :users
end
應用程序/模型/ user.rb
class User < ActiveRecord::Base
belongs_to :account
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable, :confirmable
attr_accessible :first_name, :last_name, :account_attributes, :account, :email, :password, :password_confirmation, :remember_me
end
應用程序/視圖/設計/註冊/新。 html.erb
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :first_name %><br />
<%= f.text_field :first_name %></div>
<div><%= f.label :last_name %><br />
<%= f.text_field :last_name %></div>
<%= f.fields_for :account do |account_form| %>
<div><%= account_form.label :name %><br />
<%= account_form.text_field :name %></div>
<% end %>
<div><%= f.label :email %><br />
<%= f.email_field :email %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<div><%= f.submit "Sign up" %></div>
<% end %>
這是所有的代碼我有。我沒有改變任何東西。
這是我得到的錯誤:
Account(#2175324980) expected, got ActiveSupport::HashWithIndifferentAccess(#2169631580)
在此先感謝。
編輯
我已經找到了解決辦法:
我已經改變了
<%= f.fields_for :account do |account_form| %>
要
<%= f.fields_for :account_attributes, resource.account do |account_form| %>
現在,我嘗試添加:計劃account_form,我得到:
Can't mass-assign protected attributes: plan
EDIT 2
好了,新手的錯誤。我剛剛添加了:計劃帳戶模型。
之後,我得到一個查詢錯誤,我只是將我的數據庫中的一些字段從null => false更改爲null => true和瞧。
我相信你'user'應當受理帳戶嵌套的屬性,而不是其他方式,否則你會創建與fields_for用戶 – DVG 2012-07-16 16:57:11
帳戶當我刪除了'accepts_nested_attributes_for:用戶'從我的帳戶模型中刪除表單中的文本字段。 – 2012-07-16 17:04:09