所以当我编辑Thread对象时,我只想编辑第一个Post条目。
这是我的设置:
class Thread < ActiveRecord::Base
attr_accessible :name, :posts_attributes
has_many :posts, dependent: :destroy
accepts_nested_attributes_for :posts, reject_if: lambda { |a| a[:content].blank? }
end
class Post < ActiveRecord::Base
attr_accessible :content,
belongs_to :discussion
end
<%= provide(:title, "Edit Discussion")%>
<%= form_for(@thread) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= f.label :name %>
<%= f.text_field :name, size: 60 %>
<%= f.fields_for :posts do |builder| %>
<%= builder.label :content %>
<%= builder.text_area :content, :size => "60x15" %>
<% end %>
<%= f.submit "Edit Thread" %>
<% end %>
如果我按原样运行此代码,那么我会得到一个页面,我可以编辑所有帖子,我想是因为:帖子来自关联。但我只想要第一篇文章
然后,如果我更改:发布到@ discussion.posts.at(0)以获得第一篇文章,那么我可以继续编辑页面...并且form_for正确显示但是在激活更新时,它说我无法编辑受保护的属性:帖子...有关如何仅显示&amp;的任何想法编辑第一篇文章?