函数和我希望使用返回的数据呈现一个ejs部分或模板,并最终将其附加到dom。我试过了

var html = <%- partial('comment') %>"

但这给了我一个错误,我用这样的ejs模板进行了尝试
var html = new EJS({url: '/comment.ejs'}).render(comment);

但这里我有一个问题,代码无法识别视图文件夹或资产文件夹,我也试图将我的部分文件复制到其中。
这是我的ajax函数的代码片段
<script>
function postComment(){
   if ($('#inputContent').val() != ''){
       $.post( "/comment/create/", $('#commentForm').serializeArray(), function(comment) {
           //var html = new EJS({url: '/comment.ejs'}).render(comment);
           //var html = "<%- partial('comment') %>";
           $(html).appendTo('.comments').hide().fadeIn(2000);
           $('#inputContent').val('');
        });
   }
}
</script>

有人能解决我的问题吗?非常感谢你

最佳答案

这里有一个例子可以帮助你找到你想去的地方。
您可以将模板放在/assets/linker/template目录中。链接器目录是在使用--linker参数创建新的SAIL应用程序时创建的。例如,假设我有一个名为:adduser.ejs的模板文件,其中包含以下代码,用于将用户添加到现有表中:

<tr data-id="<%- user.id %>" data-model="user">
        <% if (user.online) { %>
            <td><img src="./images/icon-online.png"></td>
        <% } else { %>
            <td> <img src="./images/icon-offline.png"></td>
        <% } %>
        <td><%= user.id %></td>
        <td><%- user.name %></td>
        <td><%- user.title %></td>
        <td><%- user.email %></td>
        <% if (user.admin) { %>
            <td> <img src="/images/admin.png"></td>
        <% } else { %>
            <td> <img src="/images/pawn.png"></td>
        <% } %>
        <td><a href="/user/show/<%- user.id %>" class="btn btn-small btn-primary">Show</a></td>
        <td><a href="/user/edit/<%- user.id %>" class="btn btn-small btn-warning">Edit</a></td>
        <td><form action="/user/destroy/<%- user.id %>" method="POST">
            <input type="hidden" name="_method" value="delete"/>
            <input type="submit" class="btn btn-sm btn-danger" value="Delete"/>
            <input type="hidden" class="_csrf" name="_csrf" value="<%- _csrf %>" />
        </form></td>
    </tr>

在本例中,我现在可以在/assets/linker/js中包含的单独javascript文件中使用该模板,具体如下:
$( 'tr:last' ).after(

  JST['assets/linker/templates/addUser.ejs']( obj )
);

因此,这需要模板并使用obj,我将它与模板一起传递来生成附加在dom中的所需html。
编辑
另外,进入gruntfile.js的第80行应该是:
var templateFilesToInject = [
'linker/**/*.html'
 ];

将*.html更改为*.ejs。
最后,将underline.js库添加到assets/linker/js目录中。
拥有链接器目录结构也很重要。我相信gruntfile.js无论您是否使用--linker名称都是相同的,所以使用js、styles和templates的子目录在名为linker的资产上创建一个目录。将assets/js assets/styles下的现有文件移动到新链接器目录下。

10-04 11:15