作为参考,这是使用 Rails 3.0.9。
我似乎无法弄清楚为什么,但我无法更新在最初创建对象/行时留空的字段。
如果我的模型如下所示:
名称 - 字符串
日期 - 日期
消息 - 字符串
如果我在初始创建时将信息放入所有字段中,则以后可以毫无障碍地更新所有内容。但是,如果我没有将信息放在其中一个字段中,比如标题,我将无法在初始创建后更新该字段。
我没有做任何不寻常的事情,形式很简单,简:
<%= form_for @event do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :date %><br />
<%= f.date_select :date %>
</p>
<p>
<%= f.label :message %><br />
<%= f.text_field :message %>
</p>
<p><%= f.submit %></p>
<% end %>
我的控制器同样简单:
def update
if @event.update_attributes(params[:event])
redirect_to @event, :notice => "Successfully updated event."
else
render :action => 'edit'
end
end
和模型:
class Event < ActiveRecord::Base
has_many :races, :dependent => :destroy
has_many :price_groups, :dependent => :destroy
accepts_nested_attributes_for :races, :reject_if => lambda{ |a| a[:name].blank? }, :allow_destroy => true
accepts_nested_attributes_for :price_groups, :reject_if => lambda{ |a| a[:name].blank? }, :allow_destroy => true
attr_accessible :name, :date, :message, :races_attributes, :price_groups_attributes
end