1

因此,当我编辑我的 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...关于如何仅显示和编辑第一个帖子的任何想法?

4

0 回答 0