2015-06-15 4 views
0

У меня есть javascript-файл abc.js. Я сохранил его внутри папки app/assets/javascripts/abc.Rails Javascript - Вызов функции javascript из вида

В моем application.js файл, я дал

//= require abc/abc 

На мой взгляд, мне нужно, чтобы отобразить объект, возвращаемый функцией внутри файла abc.js.

Я вызываю функцию с помощью следующей команды

%h4.sub-header Test Project 

%textarea.form-control{rows: 10} 

    :javascript 

    abc.diff(@a, @b) 

Я получаю & значения б от контроллера.

Но функция не вызывается. Вместо этого выводится предложение «abc.diff (a, b)».

Может ли кто-нибудь сказать мне, как вызвать функцию внутри моего представления?

+0

Вы можете обновить свой пост, чтобы включить свой вид кода? –

+0

Я обновил свой код просмотра сейчас. – Clint

+0

Вам нужно будет интерполировать, чтобы оценить @a и @b в Ruby, прежде чем перейти к 'js' (' abc.diff (# {@ a}, # {@ b}) '). –

ответ

0

Внутри блоков javascript haml вы можете просто выполнить интерполяцию строк. Кроме того, углубление очень важно в haml (очевидно). Таким образом, ваш взгляд должен выглядеть следующим образом:

%h4.sub-header Test Project 
%textarea.form-control{rows: 10} 

:javascript 
    abc.diff(#{@a}, #{@b}); 

Без дополнительной информации сложно сказать больше, но в целом это не является предпочтительным способом: код должен быть прекомпилирована в JavaScript активов, и в целом я определяю переменную или добавить data атрибуты для определенных элементов.

Так что либо что-то вроде

:javascript 
    var a = #{@a}; 
    var b = #{@b}; 

объявление в abs.js.coffee записи

$ -> 
    abc.diff(a,b) 

Чистейший имхо решение что-то вроде:

%body{'data-a': @a, 'data-b': @b} 

и внутри abs.js.coffee записи

$ -> 
    a = $('body').data('a') 
    b = $('body'_.data('b') 
    abs.diff(a,b) 

Конечно, это зависит, относится ли он к вашему решению, мои извинения за отвлекся :)

Смежные вопросы