Rails вставляет ссылку в HTML-компонент

Использование 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 ответ

Следующее недействительно:

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

Вам нужно вызвать функцию javascript со строкой, т.е.

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

Суть в данном случае должна заключаться не в запоминании этой конкретной ошибки, а в обучении отладке вашего кода.

Перейдите на соответствующую страницу в вашем приложении и откройте консоль браузера. Теперь выполните любое действие, которое должно вызвать этот javascript - например, обновление страницы или нажатие кнопки. Вы должны увидеть ошибку в журнале; что-то вроде этого:

Ошибка консоли

Это также включает в себя ссылку на строку кода, из которой произошла ошибка - т.е. в вашем случае, cell.html(<%=.... код.

Другие вопросы по тегам