我是RoR的新手,我想我可以問你一些幫助。我沒有找到我正在尋找的具體答案。RoR:與設計的嵌套表單
我有一個模型化問題,我想使用Devise。 Devise設立了一個會員模型,我想要有一個SuperMember模型,它具有比Member更多的屬性,以及一些不同的視圖。
我想設置一個嵌套窗體來創建一個SuperMember,同時在後臺自動創建成員帳戶。
Member.rb(由色器件產生)
class Member < ActiveRecord::Base
devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end
SuperMember.rb
class Supermember < ActiveRecord::Base
attr_accessible :first_name, :last_name
belongs_to :member, :dependent => :destroy
accepts_nested_attributes_for :member
end
Supermembers.controllers.rb
def new
@supermember = Supermember.new
@supermember.member = Supermember.build
respond_to do |format|
format.html # new.html.erb
format.json { render json: @supermember }
end
end
def create
@supermember = Supermember.new(params[:supermember])
respond_to do |format|
if @supermember.save
format.html { redirect_to @supermember, notice: 'Supermember was successfully created.' }
format.json { render json: @supermember, status: :created, location: @supermember }
else
format.html { render action: "new" }
format.json { render json: @supermember.errors, status: :unprocessable_entity }
end
end
我試圖創建以嵌套的形式生成會員和超級會員:
<%= simple_form_for(@supermember) do |f| %>
<%= f.error_notification %>
<div class="form-inputs">
<%= f.input :first_name %>
<%= f.input :last_name %>
</div>
<% # Devise member %>
<%= f.fields_for :member do |m| %>
<div class="form-inputs">
<%= m.input :email, :required => true, :autofocus => true %>
<%= m.input :password, :required => true %>
<%= m.input :password_confirmation, :required => true %>
</div>
<% end %>
<div class="form-actions">
<%= f.button :submit %>
</div>
<% end %>
的問題是,當我提出這種形式,我得到了以下錯誤消息:
Can't mass-assign protected attributes: member_attributes
Application Trace | Framework Trace | Full Trace
app/controllers/supermembers.rb:44:in `new'
app/controllers/supermembers.rb:44:in `create'
我真的不知道如何解決它。你能幫我解決這個問題嗎? 非常感謝!
歡迎來到SO。您選擇答案時不需要更新標題,只需標記答案 - http://meta.stackexchange.com/a/5235/181382 – mguymon