gpt4 book ai didi

ruby-on-rails - 嵌套模型形成 Rails 3

转载 作者:行者123 更新时间:2023-12-04 06:15:19 24 4
gpt4 key购买 nike

我正在关注 Railscast 196,其中 R Bates 制作了嵌套表单。他有一个 Survey Model,它与 Questions 模型有 has_many 关联。调查还接受_nested_attributes_for :questions。在 surveys_controller 的新操作中,他执行以下操作以在调查表中创建三个问题字段

  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.times (@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="&#x2713;"><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>]

所以 Survey Controller 的新操作中的 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| %>

关于ruby-on-rails - 嵌套模型形成 Rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14928749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com