Rails 3.1中同一形式的多个模型?

jas*_*ogd 5 ruby forms ruby-on-rails ruby-on-rails-3

我正在使用Rails 3.1并正在讨论论坛.我有一个名为的模型Topic,每个都有很多Posts.当用户创建一个新主题时,他们也应该创建第一个主题Post.但是,我不知道如何以同样的形式做到这一点.这是我的代码:

<%= form_for @topic do |f| %>
<p>
    <%= f.label :title, "Title" %><br />
    <%= f.text_field :title %>
</p>

<%= f.fields_for :post do |ff| %>
    <p>
        <%= ff.label :body, "Body" %><br />
        <%= ff.text_area :body %>
    </p>
<% end %>

<p>
    <%= f.submit "Create Topic" %>
</p>
<% end %>

class Topic < ActiveRecord::Base
  has_many :posts, :dependent => :destroy
  accepts_nested_attributes_for :posts
  validates_presence_of :title
end


class Post < ActiveRecord::Base
  belongs_to :topic
  validates_presence_of :body
end
Run Code Online (Sandbox Code Playgroud)

......但这似乎没有用.有任何想法吗?

谢谢!

Dty*_*Dty 6

@ Pablo的答案似乎拥有你需要的一切.但更具体......

首先在视图中更改此行

<%= f.fields_for :post do |ff| %>
Run Code Online (Sandbox Code Playgroud)

对此

<%= f.fields_for :posts do |ff| %>  # :posts instead of :post
Run Code Online (Sandbox Code Playgroud)

然后在你的Topic控制器中添加它

def new
  @topic = Topic.new
  @topic.posts.build
end
Run Code Online (Sandbox Code Playgroud)

这应该让你去.