因此,当我编辑我的 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 %>
如果我按原样运行此代码,那么我会得到一个可以编辑所有帖子的页面,我想是因为 :posts 来自关联。但我只想要第一个帖子
然后,如果我将 :posts 更改为 @discussion.posts.at(0) 以获取第一个帖子,那么我可以进入编辑页面......并且 form_for 正确显示但是在触发更新时,它说我可以' t 编辑受保护的属性:posts...关于如何仅显示和编辑第一个帖子的任何想法?