我正在使用Rails 4.2。我有一个“新项目”页面,其中有一个表单来创建一个新项目。页面上还有第二个表单,允许用户通过Ajax将用户添加到项目中。 Ajax正在运行,但我遇到了正确呈现响应的问题。
“新项目”表单将可用用户显示为由此代码段创建的复选框列表:
<div id="disclosed_users_check_box_list">
<%= f.collection_check_boxes :disclosed_user_ids, User.order(:first_name, :last_name), :id, :name_with_job_title do |b| %>
<%= b.check_box %> <%= b.label %><br>
<% end %>
</div>
“新用户”表单使用Ajax创建新用户,然后使用此JS响应:
$("#disclosed_users_check_box_list").html("<%= escape_javascript(collection_check_boxes(:project, :disclosed_user_ids, User.order(:first_name, :last_name), :id, :name_with_job_title) { |b| "#{b.check_box} #{b.label}<br>" }).html_safe %>");
我遇到的问题是最后的.html_safe
似乎没有做任何事情。呈现响应时,我看到原始HTML出现在“新项目”页面上,而不是实际的复选框和标签。
关于我哪里出错的任何想法?
答案 0 :(得分:0)
终于解决了!我把.html_safe
放在了错误的地方。这是有用的:
$("#disclosed_users_check_box_list").html("<%= j(collection_check_boxes(:project, :disclosed_user_ids, User.order(:first_name, :last_name), :id, :name_with_job_title){ |b| "#{b.check_box} #{b.label}<br>".html_safe }) %>");