Javascript 动态更新的嵌套字段\u
我已经为这个问题苦苦挣扎了好几个星期,一直没有找到或想出解决办法。以下是我试图实现的目标:一个表单,根据用户输入自动填充问题列表。具体来说,我有一个列表,列出了所有可能的问题(可能的问题模型),我想根据用户选择的站点来填充表单 我知道我没有对ajax请求做出正确的响应。我当前得到一个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
未定义的局部变量或方法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 %>