Javascript ~ SailsJs 动作未定义

Javascript ~ SailsJs Action not defined

问题

所以我正在编辑一个 crud 应用程序以在删除前进行确认,我创建了一个 javascript 函数来执行此操作,但我在我的 cmd 和 "show" 上收到以下错误第

error: Sending 500 ("Server Error") response: ReferenceError:
C:\Users\Micha\Documents\intelligente-vraagbaak\views\answer\show.ejs:176
174| if (c){
175| console.log("done");
176| window.location.href = "action/delete/<%=action.id %>"
177| }
178|
179| else{

action is not defined

代码

这是应该进行删除的代码的一部分,

<td class="actions" style="display: block; margin: 0 auto">
                        <a href="/actionbrand/create/<%= action.id %>"
                           class="btn btn-sm btn-icon btn-pure btn-default on-default"
                           data-toggle="tooltip"
                           data-original-title="Toevoegen"><i class="icon wb-plus" aria-hidden="true"></i></a>
                        <a href="/action/show/<%= action.id %>"
                           class="btn btn-sm btn-icon btn-pure btn-default on-editing"
                           data-toggle="tooltip"
                           data-original-title="Bekijk"><i class="icon wb-eye" aria-hidden="true"></i></a>
                        <a href="/action/edit/<%= action.id %>"
                           class="btn btn-sm btn-icon btn-pure btn-default on-default"
                           data-toggle="tooltip"
                           data-original-title="Bewerk"><i class="icon wb-edit" aria-hidden="true"></i></a>
                        <form id="deleteAction" action="javascript:Delete()" method="POST">
                            <button type="submit"
                                    class="btn btn-sm btn-icon btn-pure btn-default on-default"
                                    data-toggle="tooltip"
                                    data-original-title="Verwijder"><i class="icon wb-trash" aria-hidden="true"></i>
                            </button>
                        </form>
                    </td>
                </tr>
                <% }) %>
                </tbody>
            </table>
            </div>
        </div>
    </div>
</div>
<script>
    function Delete(){
        let c = confirm('U staat op het punt een actie te verwijderen, klik op "ok" om hier mee door te gaan');
        if (c){
            console.log("done");
            window.location.href = "action/delete/<%=action.id %>"
        }

        else{
            console.log("failed")
            window.location.href = "/answer/show/<%= answer.id %>"
        }
    }
</script>

我没有得到什么

我没有收到此错误,因为我在整个页面上都使用了变量操作,并且没有任何错误,但是当我在我的函数中使用它时,我收到了错误。我究竟做错了什么?任何帮助都会很好(抱歉我的英语不是母语)

编辑

"Action" 来自哪里

Action 是我所有操作的别名,在 <tr><td>...</td></tr>

上方的 foreach 循环中定义
 <%- answer.actions.length === 0 ? "<tr><td>No results</td></tr>" : null %>
            <% _.each(answer.actions, action => { %>

@mjZac 在他的评论中是正确的——action 只在你的循环中定义,所以它在循环外是未定义的。

您需要将操作(或只是 action.id)信息传递给您的方法。你的设置方式,我认为你可以通过将它作为参数添加到你的方法调用中来做到这一点。

<% _.each(answer.actions, action => { %>
    <td class="actions" style="display: block; margin: 0 auto">
        <!-- some other stuff... -->
        <form class="deleteAction" action="javascript:Delete(<%= action.id %>)" method="POST">
            <button type="submit" class="btn btn-sm btn-icon btn-pure btn-default on-default" data-toggle="tooltip" data-original-title="Verwijder"><i class="icon wb-trash" aria-hidden="true"></i></button>
        </form>
    </td>
<% }) %>

<script>
    function Delete(actionId){
        let c = confirm('U staat op het punt een actie te verwijderen, klik op "ok" om hier mee door te gaan');
        if (c){
            console.log("done");
            window.location.href = "action/delete/" + actionId;
        }
    }
</script>

综上所述,模板将操作 ID 添加到每个 tr 中的 Delete() 方法调用,然后脚本使用该 ID 生成纯 [=] 中的 url 21=](不涉及模板标签)。