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 }) %>");
我正在使用 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 }) %>");