Rails 4.2:在 Ajax 响应中呈现 collection_check_boxes 导致 non-html_safe 内容

Rails 4.2: rendering collection_check_boxes in Ajax response results in non-html_safe content

我正在使用 Rails 4.2。我有一个 "new projects" 页面,上面有一个用于创建新项目的表单。页面上还有第二种形式,允许用户通过Ajax向项目中添加用户。 Ajax 工作正常,但我在正确呈现响应时遇到问题。

"new project" 表单将可用用户显示为由以下代码段创建的复选框列表:

<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>

"new user" 表单使用 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 出现在 "new project" 页面上,而不是实际的复选框和标签。

知道我哪里出错了吗?

终于解决了!我把 .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 }) %>");