Вызов функций JavaScript из представления в Rails 3 - PullRequest
5 голосов
/ 27 июля 2010

Я новичок в Rails, и у меня довольно простая проблема с вызовом функций JavaScript из представления.В Rails 2 я бы сделал ...

= javascript_tag "name(arguments)"

, где функция javascript "name" была расположена в моем файле application.js.Тем не менее, это не похоже на работу в Rails 3?Или я что-то упустил?Я некоторое время искал в Google, но не нашел ответа.

ОБНОВЛЕНИЕ:

ОК, поэтому я посмотрел на источник двух разных способов (используя javascript_tag и фильтр jmlascript haml), как было предложено.И это очень странно, потому что источник HTML кажется идентичным?Помимо разницы в двойных и одинарных кавычках при объявлении типа скрипта.

FIRST: с использованием javascript_tag, который не работает

= javascript_tag "number_interval(#{fact.current_value}, #{fact.growth_per_second}, #{fact.decimal_number}, '#{dom_id(fact, "number")}'"

Source ...

<div id='number_number_interval_727'>loading</div>
<script type="text/javascript">
//<![CDATA[
number_interval(6952596670.36814, 2.33002440293917, 0, 'number_number_interval_727'
//]]>
</script>

SECOND: с использованием фильтра haml javascript и работает

:javascript
  number_interval(#{fact.current_value}, #{fact.growth_per_second}, #{fact.decimal_number}, '#{dom_id(fact, "number")}')

Источник ...

<div id='number_number_interval_727'>loading</div>
<script type='text/javascript'>
//<![CDATA[
number_interval(6952596917.02179, 2.33002440293917, 0, 'number_number_interval_727')
//]]>
</script>

Ну, я думаю, я просто придерживаюсь фильтра хамла!

Ответы [ 4 ]

2 голосов
/ 25 сентября 2012

У вас есть синтаксическая ошибка:

= javascript_tag "number_interval(#{fact.current_value}, #{fact.growth_per_second}, #{fact.decimal_number}, '#{dom_id(fact, "number")}'"

отсутствует закрывающая скобка для функции number_interval.Я думаю, что это должно быть:

= javascript_tag "number_interval(#{fact.current_value}, #{fact.growth_per_second}, #{fact.decimal_number}, '#{dom_id(fact, "number")}')"
2 голосов
/ 27 июля 2010

Мой друг указал мне на то, что в хамле есть помощник по javascript.Очевидно, я могу вызывать функции javascript с помощью ...

:javascript
  name_of_function(arguments)

Это работает, но, конечно, только с haml.

0 голосов
/ 02 августа 2010

Глупый вопрос, но ... application.js включен в ваш макет?

Один из вариантов - вручную написать код вызова функции js в «реальном» javascript - просто чтобы увидеть, работает ли он. например,

<script type="text/javascript">
  name(arguments)
</script>

Тогда вы можете быть уверены, что виноват не сам JS (или его отсутствие).

0 голосов
/ 27 июля 2010

Проверьте правильный синтаксис для текст ссылки

и проверьте, включили ли вы значения по умолчанию javascript в ваш файл. Как это работает для меня в RAILS 3 также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...