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(<%=....
код.