如何在json.erb模板中呈现脚本标记

How to render script tag in json.erb template

本文关键字:脚本 json erb      更新时间:2023-09-26

我在json.erb模板中有以下json数据,并包含了script标记。包含script标记后,我得到了无效的json响应。下面的代码出了什么问题。

{
  "name" : <%= @name %>,
  "totalRecords" : <%= @all_records %>,
  "filteredRecords" : <%= @filteredRecords %>,
  "data" : [
    <%= render partial: "user_list", collection: @users %>
  ]
}
<script type="text/javascript">
  $(document).ready(function(){
    $('#selectall').click(function () {
      //  .....
    });
  });
</script>

您不能在JSON中包含<script>或任何其他标记。那将使它无效。

另外,不要忘记将文本值用引号括起来。否则,您的JSON将无效。

{
  "name" : "<%= @name %>",
  "etc.": "...",

要动态加载并执行javascript文件,可以使用jQuery.getScript()方法或在javascript中动态创建script类型(如果您的项目中不使用jQuery)。

$.getScript('js/your-javascript.js');

您可以使用从控制器渲染JSON

def show
  ... # setup code
  render json: @my_json_structure
end

这将允许您从AJAX请求中点击show操作。如果我能给你更多的信息,请告诉我。

如果您想要脚本标记或需要ro运行js作为响应,我认为您应该使用js.erb并在控制器上创建json对象,该对象可以在js.erb上使用