Javascript 动态更新的嵌套字段\u

Javascript 动态更新的嵌套字段\u,javascript,ajax,ruby-on-rails-4,Javascript,Ajax,Ruby On Rails 4,我已经为这个问题苦苦挣扎了好几个星期,一直没有找到或想出解决办法。以下是我试图实现的目标:一个表单,根据用户输入自动填充问题列表。具体来说,我有一个列表,列出了所有可能的问题(可能的问题模型),我想根据用户选择的站点来填充表单 我知道我没有对ajax请求做出正确的响应。我当前得到一个未定义的局部变量或方法f错误。我发现了几个关于通过表单生成器(和)的问题,但是没有一个有帮助 我对ruby和rails还是新手,所以非常感谢您的帮助和指导 版本(ruby 2.3、rails 4.2.2)。也使用Si

我已经为这个问题苦苦挣扎了好几个星期,一直没有找到或想出解决办法。以下是我试图实现的目标:一个表单,根据用户输入自动填充问题列表。具体来说,我有一个列表,列出了所有可能的问题(可能的问题模型),我想根据用户选择的站点来填充表单

我知道我没有对ajax请求做出正确的响应。我当前得到一个
未定义的局部变量或方法f
错误。我发现了几个关于通过表单生成器(和)的问题,但是没有一个有帮助

我对ruby和rails还是新手,所以非常感谢您的帮助和指导

版本(ruby 2.3、rails 4.2.2)。也使用SimpleForm和Cocoon gems

报告.rb

class Report < ActiveRecord::Base
  belongs_to :site
  has_many :questions, :dependent => :destroy
  accepts_nested_attributes_for :questions, :allow_destroy => true
end
class Site < ActiveRecord::Base
  has_many :reports
  validates :state, presence: true
end
class Question < ActiveRecord::Base
    belongs_to :report
    has_many :answers, :dependent => :destroy
    accepts_nested_attributes_for :answers, :allow_destroy => true
end
class PossibleQuestion < ActiveRecord::Base
  validates :content, :state, presence: true
end
class Answer < ActiveRecord::Base
  belongs_to :question
end
def new
    @report = Report.new
    @questions = PossibleQuestion.all
    @questions.each do |q|
        question = @report.questions.build
        question.content = q.content
        question.answers.build
    end
end

def questions_list
  @site = Site.find(params[:id])
  @state = @site.state
  @questions = PossibleQuestion.where(state: @state).to_a
  respond_to do |format|
    format.js
  end
end
$(".questions").html("<%= j render 'question_fields', :locals => { :questions => @questions } %>");
<%= f.simple_fields_for :questions do |builder| %>
  <%= f.label f.object.content %>
  <%= f.hidden_field :content, :value => f.object.content %>

  <%= f.simple_fields_for :answers do |builder| %>
    <%= render 'answer_fields', :f => builder %>
  <% end %>
<% end %>
<%= simple_form_for @report do |f| %>
  <%= f.association :site %>

  <div class="questions"></div>
<% end %>
report.js

$(document).ready(function() {
    $('#report_site_id').change(function() {
        site_id = $('#report_site_id').find(':selected').val();
        $.ajax({
                url: '/questions_list',
                data: { id: site_id, },
问题列表.js.erb

class Report < ActiveRecord::Base
  belongs_to :site
  has_many :questions, :dependent => :destroy
  accepts_nested_attributes_for :questions, :allow_destroy => true
end
class Site < ActiveRecord::Base
  has_many :reports
  validates :state, presence: true
end
class Question < ActiveRecord::Base
    belongs_to :report
    has_many :answers, :dependent => :destroy
    accepts_nested_attributes_for :answers, :allow_destroy => true
end
class PossibleQuestion < ActiveRecord::Base
  validates :content, :state, presence: true
end
class Answer < ActiveRecord::Base
  belongs_to :question
end
def new
    @report = Report.new
    @questions = PossibleQuestion.all
    @questions.each do |q|
        question = @report.questions.build
        question.content = q.content
        question.answers.build
    end
end

def questions_list
  @site = Site.find(params[:id])
  @state = @site.state
  @questions = PossibleQuestion.where(state: @state).to_a
  respond_to do |format|
    format.js
  end
end
$(".questions").html("<%= j render 'question_fields', :locals => { :questions => @questions } %>");
<%= f.simple_fields_for :questions do |builder| %>
  <%= f.label f.object.content %>
  <%= f.hidden_field :content, :value => f.object.content %>

  <%= f.simple_fields_for :answers do |builder| %>
    <%= render 'answer_fields', :f => builder %>
  <% end %>
<% end %>
<%= simple_form_for @report do |f| %>
  <%= f.association :site %>

  <div class="questions"></div>
<% end %>
\u form.html.erb

class Report < ActiveRecord::Base
  belongs_to :site
  has_many :questions, :dependent => :destroy
  accepts_nested_attributes_for :questions, :allow_destroy => true
end
class Site < ActiveRecord::Base
  has_many :reports
  validates :state, presence: true
end
class Question < ActiveRecord::Base
    belongs_to :report
    has_many :answers, :dependent => :destroy
    accepts_nested_attributes_for :answers, :allow_destroy => true
end
class PossibleQuestion < ActiveRecord::Base
  validates :content, :state, presence: true
end
class Answer < ActiveRecord::Base
  belongs_to :question
end
def new
    @report = Report.new
    @questions = PossibleQuestion.all
    @questions.each do |q|
        question = @report.questions.build
        question.content = q.content
        question.answers.build
    end
end

def questions_list
  @site = Site.find(params[:id])
  @state = @site.state
  @questions = PossibleQuestion.where(state: @state).to_a
  respond_to do |format|
    format.js
  end
end
$(".questions").html("<%= j render 'question_fields', :locals => { :questions => @questions } %>");
<%= f.simple_fields_for :questions do |builder| %>
  <%= f.label f.object.content %>
  <%= f.hidden_field :content, :value => f.object.content %>

  <%= f.simple_fields_for :answers do |builder| %>
    <%= render 'answer_fields', :f => builder %>
  <% end %>
<% end %>
<%= simple_form_for @report do |f| %>
  <%= f.association :site %>

  <div class="questions"></div>
<% end %>