我正在按照此http://railscasts.com/episodes/196-nested-model-form-part-1创建嵌套模型的表单。
链接中的示例是Survey
模型有3个问题。每个Question
有4个答案。我在这里复制了示例,但删除了Answer
模型以使其更简单。
因此surveys_controller
的{{1}}方法看起来像这样。
new
<{1>}中的,我们有:
# surveys_controller.rb
def new
@survey = Survey.new
3.times do
question = @survey.questions.build
end
end
最后这是views/surveys/_form.html.erb
<%= form_for @survey do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<%= f.fields_for :questions do |builder| %>
<%= render "question_fields", :f => builder %>
<% end %>
<p><%= f.submit "Submit" %></p>
<% end %>
我的问题是,如果我在上述views/surveys/_question_fields.html.erb
方法中设置了每个<p>
<%= f.label :content, "Question" %><br />
<%= f.text_area :content, :rows => 3 %><br />
<%= f.check_box :_destroy %>
<%= f.label :_destroy, "Remove Question" %>
</p>
的属性,我该如何在视图中显示该值。
我们说我将question
修改为:
new
如何在surveys_controller.rb
或# surveys_controller.rb
def new
@survey = Survey.new
3.times do
question = @survey.questions.build
question.another_attribute = another_value # added line
end
end
内显示question.another_attribute
的价值?
答案 0 :(得分:1)
您正在将:f => builder
传递给部分内容,因此您可以使用f
。调用f.object
应该返回表单的对象,在这种情况下是一个问题。所以以下内容应该有效:
<%= f.object.another_attribute %>