Rails:fields_for 不工作
Rails: fields_for not working
我正在关注关于 Nested Model Form
的 RailsCast,但有些事情似乎很奇怪。
这里是Model
关系
class Question < ActiveRecord::Base
belongs_to :survey
end
class Survey < ActiveRecord::Base
has_many :questions
accepts_nested_attributes_for :questions
end
_form.html.erb(由 scaffold
创建)
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<% f.fields_for :questions do |builder| %>
<div class ='question'>
<%= builder.label :content, "Question" %>
<br>
<%= builder.text_area :content, :rows => 3 %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
survey_controller.rb
# GET /surveys/new
def new
@survey = Survey.new
3.times do |i|
@survey.questions.build
end
end
我原以为它会像
那样显示
然而,它没有显示 3 块问题。
您错过了表单中非常小但很重要的部分 - 实际上是 输出 f.fields_for
调用。
您需要调用<%= f.fields_for :question
(注意=
)才能实际输出生成的表格。
我正在关注关于 Nested Model Form
的 RailsCast,但有些事情似乎很奇怪。
这里是Model
关系
class Question < ActiveRecord::Base
belongs_to :survey
end
class Survey < ActiveRecord::Base
has_many :questions
accepts_nested_attributes_for :questions
end
_form.html.erb(由 scaffold
创建)
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<% f.fields_for :questions do |builder| %>
<div class ='question'>
<%= builder.label :content, "Question" %>
<br>
<%= builder.text_area :content, :rows => 3 %>
</div>
<% end %>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
survey_controller.rb
# GET /surveys/new
def new
@survey = Survey.new
3.times do |i|
@survey.questions.build
end
end
我原以为它会像
那样显示然而,它没有显示 3 块问题。
您错过了表单中非常小但很重要的部分 - 实际上是 输出 f.fields_for
调用。
您需要调用<%= f.fields_for :question
(注意=
)才能实际输出生成的表格。