我正在尝试使用jQuery做级联依赖选择框。我在名为“get_descriptions.js.erb”的文件中有以下内容,它被调用得很好:
<% fields_for :person do |f| %>
$("#descriptiondiv .floater:first").html("<%= f.select :description, @person.descriptions.map_by_person_type %>");
<% end %>
我可以在Firebug中看到确实返回了相应的响应,但屏幕上没有显示任何内容。以下是Firebug中报告的确切响应,没有错误:
$("#descriptiondiv .floater:first").html("<select id="person_description" name="person[description]"><option value="Employee">Employee</option></select>");
该响应不显示在浏览器上。
但是,如果我这样做:
<% fields_for :person do |f| %>
$("#descriptiondiv .floater:first").html("hello world");
<% end %>
然后“你好世界”确实出现在我期望的地方。
为什么我的选择框没有在屏幕上呈现,但“你好的单词”是?
答案 0 :(得分:1)
看起来像是引用问题,请尝试添加escape_javascript
:
<% fields_for :person do |f| %>
$("#descriptiondiv .floater:first").html("<%= escape_javascript f.select :description, @person.descriptions.map_by_person_type %>");
<% end %>
或只是j
:
<% fields_for :person do |f| %>
$("#descriptiondiv .floater:first").html("<%= j f.select :description, @person.descriptions.map_by_person_type %>");
<% end %>