Rails:使用数据库表中的数据创建调查

时间:2012-11-07 23:19:29

标签: ruby-on-rails-3

我目前正在尝试创建一项调查,该调查将使用存储在表格中的问题。我已经从rails casts中读过nested model form part 1但是由于问题没有在调查中显示,我没有到达任何地方。

我有三个表,一个表有问题的文本,另一个表保存谁进入调查的记录,另一个表保存用户对问题的答案。

变量表: name:varchar id:整数

报告表 员工姓名:varchar 日期:日期 id:整数

report_variable table question_id REPORT_ID 答案

为报告/新修改的代码:

 # GET /reports/new
 # GET /reports/new.json
 def new
   @report = Report.new
   #variable = @report.variable.build #dont know what to do here, gives an error with report_id
   respond_to do |format|
     format.html # new.html.erb
     format.json { render json: @report }
   end
 end

修改后的报告/ _form.html.erb

   <div >
     <%= f.fields_for :variable do |builder| %>
       <%= render variable_fields, :f => builder %>
     <% end %>
   </div>

创建了report / _variable_fields.html.erb

   <p>
      <%= f.label :name %>
      <%= f.text_field :name, :class => 'text_field' %>
   <p>

report_variable的模型

class ReportVariable < ActiveRecord::Base
  attr_accessible :report_id, :value, :variable_id
  has_and_belongs to many :reports
  has_and_belongs to many :variables
end

报告模型

class Report < ActiveRecord::Base
  attr_accessible :employeeName
  has_many :report_variable
  has_many :variable

  accepts_nested_attributes_for :report_variable
  accepts_nested_attributes_for :variable
end

很抱歉,如果这是一个简单的问题,我对rails很新。

1 个答案:

答案 0 :(得分:2)

欢迎使用Rails!

我认为简单的答案是字段没有显示,因为没有任何嵌套记录。您可以通过取消注释variable行来解决这个问题:

def new
  @report = Report.new
  @report.variables.build #this line creates 1 new empty variable, unsaved.
  respond_to do |format|
    format.html # new.html.erb
    format.json { render json: @report }
  end
end

如果您想要多个变量,请调用以下内容:

3.times { @report.variables.build }

这样你在表单助手中放置的@report对象就会有三个变量。这应该让你再次移动,更难的是添加ajax添加/删除变量,但如果你知道有多少提前,你不必处理。

祝你好运!