我正在使用Rails 3.1并正在讨论论坛。我有一个名为Topic
的模型,每个模型都有很多Post
个。当用户创建新主题时,他们也应该创建第一个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
...但这似乎不起作用。有什么想法吗?
谢谢!
答案 0 :(得分:6)
首先在视图中更改此行
<%= f.fields_for :post do |ff| %>
到这个
<%= f.fields_for :posts do |ff| %> # :posts instead of :post
然后在你的Topic
控制器中添加此
def new
@topic = Topic.new
@topic.posts.build
end
这应该让你去。
答案 1 :(得分:3)