0
我是JQuery/JS的初学者,我试图在Rails 3.1应用程序中实现一个依赖下拉列表。我有以下形式:JQuery ERB模板不能插入HTML
<%= debug params %>
<%= form_for([@wall.climbing_centre, @wall]) do |f| %>
<% if @wall.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@wall.errors.count, "error") %> prohibited this wall from being saved:</h2>
<ul>
<% @wall.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div id="kind" class="field">
<%= f.label :kind %><br />
<%= f.select :kind, Wall::Kinds, :input_html => {:rel => "/kinds"} %>
</div>
<div class="field">
<%= f.label :wall_number %><br />
<%= f.text_field :number%>
</div>
<div id="gradelist" class="field">
<%= f.label :grade %><br />
<%= f.select :grade, Wall::BGrades %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
下面的JavaScript
jQuery.ajaxSetup({
'beforeSend': function(xhr) { xhr.setRequestHeader("Accept", "text/javascript") }
});
jQuery(function($) {
// when the #kind field changes
$("#kind").change(function() {
// make a POST call and replace the content
$.post('/kinds', {id: $("#wall_kind").val()}, null, "script");
return false;
});
})
以下JS.ERB模板:
$("#gradelist").html("<%= label :gbabe, 'Grade'%></br><%=select_tag :gbabe, options_for_select(@grades) %>");
在我的心墙控制器的下列行动: 高清grades_by_kind
if params[:id].present?
@grades = (params[:id] == "Boulder" ? Wall::BGrades : Wall::FGrades)
else
@grades = []
end
respond_to do |format|
format.js
end
end
我在壁模型下列常数:
FGrades = %w[5 5+ 6A 6A+ 6B 6B+ 6C 6C+ 7A 7A+ 7B 7B+ 8A 8A+ 8B 8B+ 9A 9A+]
BGrades = %w[V0 V0+ V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 15]
Kinds = ['Boulder', 'Leading', 'Top Rope']
改变在一个选择:一种选择框,触发JS发布请求,并且接收以下响应:
$("#wall_grade").html("<label for="gbabe_Grade">Grade</label></br><select id="gbabe" name="gbabe"><option value="5">5</option>
<option value="5+">5+</option>
<option value="6A">6A</option>
etc...
<option value="8B+">8B+</option>
<option value="9A">9A</option>
<option value="9A+">9A+</option></select>");
然而,在网页中呈现的id =“gradelist”div中的下拉值实际上并未改变。为什么不改变HTML?
嗨,杰夫,感谢您的帮助。我正在使用选项进行选择。以下是我的js.erb模板:$(“#gradelist”)。html(“<%= label:gbabe,'Grade'%><%= select_tag:gbabe,options_for_select(@grades)%>”);.奇怪的是,如果我使用下面的代码:$(“#gradelist”)。html(“blablabla”);内部html确实被替换为“blablabla”。 – Himerzi