2016-09-08 5 views
0

Использование Rails 4.2 и Draper gem. У меня есть декоратор:Rails инжекционная ссылка в компоненте html

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

Проверьте свою консоль браузера, вы увидите ошибку JS. Также проверьте ответ этого вызова ajax. Он содержит недопустимый javascript. –

+0

Подсказка: вам нужны цитаты. –

+0

Просто попробовал .. с двойными кавычками тоже не работает – user1066183

ответ

1

Следующая недействителен:

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

Вы должны вызвать яваскрипта функцию со строкой, то есть:

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

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

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

Console error

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

+0

Я попытался проверить: никаких ошибок. Я также использовал двойные кавычки, но результат тот же – user1066183

+0

Я использовал одиночный кавычек, и он работает – user1066183