Rails在html组件中注入链接

时间:2016-09-08 09:57:01

标签: ruby-on-rails ruby draper

使用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 %>");

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

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

1 个答案:

答案 0 :(得分:1)

以下内容无效:

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

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

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

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

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

Console error

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