嵌套模型形式轨道3
我跟随着Railscast 196其中R Bates使嵌套形式。他有一个调查模型,has_many与一个Questions模型关联。调查还接受了以下问题:问题。在surveys_controller的新动作,他做如下的调查表,以创建三个问题领域嵌套模型形式轨道3
def new
@survey = Survey.new
3.times { @survey.questions.build }
end
和里面的form_for @survey他下面的表单创建问题领域
<% f.fields_for :questions do |builder| %>
<p>
<%= builder.label :content, "Question" %><br />
<%= builder.text_area :content, :rows => 3 %>
</p>
在视频中,一旦他点击新调查,它会显示三个问题字段(以及表单的其他元素)。这个形式的元素相关的问题并没有出现在我的面前。我认为他在Rails 3发布之前做了这个插曲,所以有些东西可能已经改变了,但是,除了这是我没有看到做3次的结果(@ survey.questions.build)之外,我无法弄清楚什么。
型号
class Survey < ActiveRecord::Base
attr_accessible :name
has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions
end
形式
<%= form_for @survey do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<% f.fields_for :questions do |builder| %>
<p>
<%= builder.label :content, "Question" %><br />
<%= builder.text_area :content, :rows => 3 %>
</p>
<% end %>
<p><%= f.submit %></p>
<% end %>
HTML表单
<form accept-charset="UTF-8" action="/surveys" class="new_survey" id="new_survey" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓"><input name="authenticity_token" type="hidden" value="AWvA3/JpixF0C3sO8OzA5mMGsJzknvu99eovYv7M78E="></div>
<p>
<label for="survey_name">Name</label><br />
<input id="survey_name" name="survey[name]" size="30" type="text">
</p>
<p><input name="commit" type="submit" value="Create Survey"></p>
</form>
更新
形式里面,我加入这个
<%= @survey.questions %>
和它的显示这个
[#<Question id: nil, survey_id: nil, content: nil, created_at: nil, updated_at: nil>, #<Question id: nil, survey_id: nil, content: nil, created_at: nil, updated_at: nil>, #<Question id: nil, survey_id: nil, content: nil, created_at: nil, updated_at: nil>]
所以在测量控制器的新动作3.times显然是工作,但对于由于某些原因我没有显示字段
<% f.fields_for :questions do |builder| %>
<p>
<%= builder.label :content, "Question" %><br />
<%= builder.text_area :content, :rows => 3 %>
</p>
我应该在第一次看到它时特德。无论如何,您在fields_for
上缺少=
。那应该是
<%= f.fields_for :questions do |builder| %>
它总是给我们带来的小细节。 – 2013-02-18 03:17:12
这实际上是从Rails 2改为3的东西。Ryan Bates源代码不包含'=' – Leahcim 2013-02-18 04:21:22
是你的代码?如果是这样,我没有看到任何问题。你应该看到表单上的3个问题。你可以发布你的调查模型和HTML表单吗? – jvnill 2013-02-18 02:49:06
@jvnill谢谢,我更新了OP – Leahcim 2013-02-18 02:53:37