Лучший способ генерировать код JavaScript в ruby ​​(RoR) - PullRequest
0 голосов
/ 29 июля 2010

Я видел несколько плагинов rails, которые динамически генерируют код javascript с использованием ruby.

1

%Q ( mixed block of javascript and ruby )

2

<<-CODE
some mixed ruby and javascript code
CODE

Будучи Java-разработчиком, я не понимаю

  1. что означает этот странно выглядящий синтаксис?

  2. Один путь лучше другого?

  3. Может кто-нибудь указать мне на надлежащую документацию о таких вещах?

Ответы [ 4 ]

6 голосов
/ 29 июля 2010

Первый синтаксис: строковый литерал Ruby синтаксис.В частности,% Q (заглавная Q, а не строчная) означает, что строка будет интерполирована.Например:

%Q[Here's a string with #{a_variable} interpolated!]

Обратите внимание, что вы можете использовать любые произвольные символы в качестве разделителей открытия и закрытия.

Второй синтаксис - синтаксис Ruby heredoc .Черта после открытия << указывает, что Ruby удалит пробелы из начала строк ввода, содержащихся в блоке heredoc.


Ruby on Rails поставляется с Prototype JavaScript framework встроенный уже.Он также поставляется с вспомогательными методами JS-генератора , которые динамически генерируют код прототипа на основе кода Ruby.

Вам не нужно их использовать, если вы этого не хотите.На самом деле, я редко использую их или Prototype вообще, так как jQuery - мой предпочтительный JS-фреймворк.Таким образом, один способ не «лучше», чем другой (за исключением того, что в некоторых случаях heredoc лучше строкового литерального синтаксиса).

2 голосов
/ 29 июля 2010

В Ruby %Q предоставляет строку с двойными кавычками, поэтому:

%Q(mixed block of javascript and ruby) #=> "mixed block of javascript and ruby"

<<-CODE - это то, что Руби называет Здесь документом , или просто heredoc . Это механизм создания строк произвольного формата с сохранением специальных символов, таких как новые строки и табуляции.

Heredoc создается, предшествуя тексту <<, за которым следует строка разделителя, которую вы хотите использовать, чтобы отметить конец текста.

text = <<-DOC
To be, or not to be: that is the question

William Shakespeare
DOC

Когда эта строка печатается, она выглядит точно так же, как она была введена вместе со всеми новыми строками и вкладками:

To be, or not to be: that is the question

William Shakespeare
0 голосов
/ 29 июля 2010
  1. %Q - эквивалент строки "" в Ruby.Но если вы используете такой синтаксис% Q, вам не нужно экранировать двойные кавычки.
  2. Это объявление HEREDOC.Вам также не нужно экранировать кавычки.
  3. Строки в Ruby .
0 голосов
/ 29 июля 2010

Здесь вы можете найти детали. Рубин с JavaScript

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