Ruby on Rails:同一表单中的多个输入字段 – 更改ID /值

有一个页面,其中有相同的东西的多个输入字段,post。 现在,当用户输入问题时,假设3个字段,保存到数据库的唯一字段是最后一个。 然而,它应该保存所有三个并给它们每个自己的post_id。 也; 如果用户没有为其他字段输入任何内容,则它也不应保存在数据库中。

new_step_4_html.erb

     

projects_controller.rb

 def new_step_4 @post = Post.new end 

现在,它只是提交一个:content字段,显然是因为它们都共享相同的id /值。 不幸的是,Railscasts#197适用于嵌套表单,因此他所做的javascript和帮助程序都适用于嵌套。 我认为这很简单。 来自IRC的人提到我可以在视图文件中做某种“3次”代码或其他什么?

首先,您可能需要编辑您发布的模型。

post.rb

 has_many :contents, :dependent => :destroy accepts_nested_attributes_for :contents 

您将需要另一个模型来存储内容字段。 所以首先生成一个模型

 rails g model content post_id:integer body:text 

该模型

content.rb

 belongs_to :post 

现在,让我们多次执行<%= f.text_field:content%>,让rails创建它们,因为现在你基本上让它们相互覆盖。

 3.times do content = @post.content.build end 

表单视图将是这样的:

 <%= form_for @post do |f| %> <%= f.fields_for :contents do |builder| %> <%= builder.label :body, "Question" %>
<%= builder.text_area :body, :rows => 3 %>
<%= end %>

<%= f.submit "Submit" %>

<% end %>

我没有测试这段代码,但这个想法应该是正确的。 如果您需要更多信息,请告诉我。