0
當我嘗試使留下郵件字段爲空的新女孩記錄時,出現此錯誤。
郵件字段是嵌套的。爲什麼我仍然收到錯誤「無法批量分配受保護的屬性:聯繫人」
當它沒有輸入時,我只希望它只創建Girl記錄而不創建聯繫人記錄。
當它充滿了某些東西時,我希望它可以同時記錄女孩和聯繫人。
當它更新時,我希望它做同樣的事情。
我該怎麼做?我的代碼有什麼問題?
我查看
<%= form_for(@girl) do |f| %>
<% if @girl.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@girl.errors.count, "error") %> prohibited this girl from being saved:</h2>
<ul>
<% @girl.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name_en %><br />
<%= f.text_field :name_en %>
</div>
<div class="field">
<%= f.label :name_ja %><br />
<%= f.text_field :name_ja %>
</div>
<div class="field">
<%= f.label :gender_id %><br />
<%= f.number_field :gender_id %>
</div>
<div class="field">
<%= f.label :job_type_id %><br />
<%= f.number_field :job_type_id %>
</div>
<div class="field">
<%= f.label :age %><br />
<%= f.number_field :age %>
</div>
<div class="field">
<%= f.fields_for :contacts do |contact| %>
<%= f.label :mail %><br />
<%= contact.text_field :mail %>
<% end %>
</div>
<div class="field">
<%= f.label :photo %><br />
<%= f.file_field :photo %>
</div>
<div class="field">
<%= f.label :tag_list, 'tag' %><br />
<%= f.text_field :tag_list %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我控制器
def new
@girl = Girl.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @girl }
end
end
def create
@girl = Girl.new(params[:girl])
respond_to do |format|
if @girl.save
format.html { redirect_to @girl, notice: 'Girl was successfully created.' }
format.json { render json: @girl, status: :created, location: @girl }
else
format.html { render action: "new" }
format.json { render json: @girl.errors, status: :unprocessable_entity }
end
end
end
def update
@girl = Girl.find(params[:id])
respond_to do |format|
if @girl.update_attributes(params[:girl])
format.html { redirect_to @girl, notice: 'Girl was successfully updated.' }
format.json { head :ok }
else
format.html { render action: "edit" }
format.json { render json: @girl.errors, status: :unprocessable_entity }
end
end
end
女孩模型
class Girl < ActiveRecord::Base
has_many :users
has_one :contact
accepts_nested_attributes_for :contact
attr_accessible :id, :name_en, :name_ja, :gender_id, :job_type_id, :age, :contact_attributes, :photo, :tag_list
searchable do
text :name_en, :name_ja
text :contact do
contact.mail
end
end
has_attached_file :photo,
:styles => {
:thumb=> "100x100>",
:small => "400x400>" }
acts_as_taggable_on :tags
acts_as_commentable
end
聯繫模型
class Contact < ActiveRecord::Base
belongs_to :girl, :class_name => "Girl"
accepts_nested_attributes_for :girl
attr_accessible :mail
end
謝謝!我剛剛在創建方法中添加了@ girl.contacts = params [:girl] [:contacts]前面的if @ girl.save。但它仍然表示同樣的錯誤。我還有什麼想念? – MKK 2012-07-13 18:01:09
您需要從參數中刪除聯繫人部分。在'update_attributes'調用之前調用'params [:girl] .delete(:contacts)''。 – Gazler 2012-07-13 18:02:28
如果我把它作爲聯繫人,消息輸入框消失了。如果可以的話,它消失了 – MKK 2012-07-13 18:02:47