0

使用 Rails 4.2 和 Draper gem。我有一个装饰器:

  def status_link
    if enabled?
      h.link_to 'Disable', h.disable_company_path(id), data: {confirm: 'Are you sure?'}, method: :put, remote: true
    else
      h.link_to 'Enable', h.enable_company_path(id), method: :put, remote: true
    end
  end

我想在 js 视图中呈现链接:

var cell = $("#my-id");
cell.html(<%= @my_model.decorate.status_link %>);

但是链接没有注入到单元格中。单元格是空的。

如果我在控制台中打印status_link它的工作方法:

<%= pp  @my_model.decorate.status_link %>
"<a data-confirm=\"Are you sure?\" data-remote=\"true\" rel=\"nofollow\" data-method=\"put\" href=\"/companies/210/disable\">Disable</a>"

如果我尝试注入一个整数,它会起作用:

cell.html(<%= @my_model.id %>);

我也尝试使用双引号:

cell.html("<%= @my_model.decorate.status_link %>");

但结果是一样的。我尝试使用浏览器控制台检查代码,但没有显示错误

为什么在整数工作正常时没有注入链接?

4

1 回答 1

1

以下内容无效:

cell.html(<%= @my_model.decorate.status_link %>);

您需要使用字符串调用 javascript 函数,即:

cell.html("<%= @my_model.decorate.status_link %>");

这里的要点不应该是记住这个特定的错误,而是学习如何调试你的代码。

导航到应用程序中的相关页面并打开浏览器控制台。现在执行应该触发该 javascript 的任何操作 - 例如页面刷新或单击按钮。您应该在日志中看到错误;像这样的东西:

控制台错误

这还包括指向错误源自的代码行的链接 - 即在您的情况下,cell.html(<%=....代码。

于 2016-09-08T10:24:36.677 回答