Вы не можете оценить переменную JavaScript внутри вашего метода Ruby. Кроме того, ваш текущий скрипт должен находиться за пределами конвейера активов, что обычно является плохой практикой.
Одним простым решением является передача переменной в качестве атрибута данных. Вы запустите свой метод, а затем передадите результат с помощью jQuery после загрузки DOM. Это позволяет сохранить JavaScript в конвейере активов и передать его данные, оцененные сервером Ruby.
Примечание: @b
должен быть определен на контроллере:
<div id="foo" data-bar="<%= method.a(@b).to_s %>"></div>
<script>
$(document).ready(function() {
var b = $(#foo).data('bar');
var c = "string" + b;
});
</script>
Другой вариант, чтобы сделать ваш скрипт асинхронно с unobtrusive JavaScript в Rails.
возможно дубликат: http://stackoverflow.com/questions/4959770/how-to-pass-a-javascript-variable-into-a -erb-code-in-a-js-view –
Я не хочу закрывать как дубликат этого вопроса только для «принятого» ответа:} Может быть, другой? http://stackoverflow.com/questions/14080154/how-to-use-a-javascript-variable-in-erb-code-in-rails?lq=1, http://stackoverflow.com/questions/5655096/ send-javascript-variables-to-rails? lq = 1 – user2864740