Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3.1中相同形式的多个模型?_Ruby On Rails_Ruby_Ruby On Rails 3_Forms - Fatal编程技术网

Ruby on rails Rails 3.1中相同形式的多个模型?

Ruby on rails Rails 3.1中相同形式的多个模型?,ruby-on-rails,ruby,ruby-on-rails-3,forms,Ruby On Rails,Ruby,Ruby On Rails 3,Forms,我正在使用Rails 3.1,并且正在一个讨论论坛上工作。我有一个名为Topic的模型,每个模型都有许多Posts。当用户创建一个新主题时,他们还应该创建第一个Post。然而,我不确定如何以同样的形式做到这一点。这是我的密码: <%= form_for @topic do |f| %> <p> <%= f.label :title, "Title" %><br /> <%= f.text_field :title %>

我正在使用Rails 3.1,并且正在一个讨论论坛上工作。我有一个名为
Topic
的模型,每个模型都有许多
Post
s。当用户创建一个新主题时,他们还应该创建第一个
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




类主题:destroy 接受以下内容的\u嵌套\u属性\u:posts 验证是否存在:title 结束 类Post
。。。但这似乎不起作用。有什么想法吗


谢谢

Ryan Bates和

对于您的特殊情况:当您调用字段_时,您使用的是模型(:post),而不是关联(:posts)


同时检查
的正确使用。在Rails3.x中,构造的行为发生了变化。块帮助程序(表单、字段等)不需要它,而内联帮助程序(文本、字段、文本、区域等)确实需要它。

@Pablo的答案似乎有你需要的一切。但更具体地说

首先在视图中从

<%= f.fields_for :post do |ff| %>

这应该能让你走了。

谢谢你的链接,但我正在寻找一些特定于我的问题的东西。
<%= f.fields_for :posts do |ff| %>  # :posts instead of :post
def new
  @topic = Topic.new
  @topic.posts.build
end