我正在railscasts观看,并试图亲自动手写下这个例子。 但我遇到了以下步骤的麻烦:创建表格。
它需要在Survey和Question之间建立关联。 但是我的rails应用程序中无法建立此关联,因此表单中不会出现任何问题
以下是代码
调查模型:
class Survey < ActiveRecord::Base
attr_accessible :name, :questions
has_many :questions, :dependent => :destroy
accepts_nested_attributes_for :questions
end
问题模型:
class Question < ActiveRecord::Base
attr_accessible :context, :survey_id
belongs_to :survey
end
Surveys_Controller方法:
# GET /surveys/new
# GET /surveys/new.json
def new
@survey = Survey.new
3.times {@survey.questions.build}
respond_to do |format|
format.html # new.html.erb
format.json { render json: @survey }
end
end
_form.html.erb中的问题部分
<% f.fields_for :questions do |builder|%>
<%= builder.label :context, "Question" %><br />
<%= builder.text_area :context, :rows => 3 %>
<% end %>
以下是我在控制台测试中获得的内容
irb(main):010:0> @survey = Survey.new
=> #<Survey id: nil, name: nil, created_at: nil, updated_at: nil>
irb(main):011:0> 3.times {@survey.questions.build}
=> 3
irb(main):012:0> @survey.questions
=> [#<Question id: nil, survey_id: nil, context: nil, created_at: nil, updated_a
t: nil>, #<Question id: nil, survey_id: nil, context: nil, created_at: nil, upda
ted_at: nil>, #<Question id: nil, survey_id: nil, context: nil, created_at: nil,
updated_at: nil>]
答案 0 :(得分:1)
你有一个新的模型对象。你为空对象创建了3个问题。你的问题必须是空的。它没有保存或定义。
答案 1 :(得分:1)
如果我理解你的问题,你的表格中没有问题。您需要在表单中为一个问题提供一个表单。你在做什么问题吗?
您需要以下内容:
<% survey.questions.each do |question| %>
<%= fields_for question do |builder| %>
答案 2 :(得分:0)
我在
上犯了输入错误 <%
f.fields_for :questions do |builder|%>
它应该返回一些插入HTML文档的文本,而不仅仅是处理为ruby代码
应为<%=
f.fields_for :questions do |builder|%>
但是,谢谢你的所有答案:)