在ruby(RoR)中生成javascript代码的最佳方法

时间:2010-07-29 13:22:56

标签: javascript ruby-on-rails ruby

我见过一些使用ruby动态生成javascript代码的rails插件。

1

%Q ( mixed block of javascript and ruby )

2

<<-CODE
some mixed ruby and javascript code
CODE

作为一名java开发人员,我不明白

  1. 那些奇怪的语法是什么意思?

  2. 比其他方式更好吗?

  3. 有人能指出我关于此类事情的正确文件吗?

4 个答案:

答案 0 :(得分:6)

第一种语法是Ruby's string literal语法。具体来说,%Q(大写Q而不是小写)意味着将插入字符串。例如:

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

请注意,您可以使用任意字符作为打开和关闭分隔符。

第二种语法是Ruby的heredoc syntax。打开<<后的破折号表示Ruby将从heredoc块中包含的输入行的开头删除空格。


Ruby on Rails已经内置Prototype JavaScript framework内置版。它还随附JS generator helper methods,它基于Ruby代码动态生成Prototype代码。

如果您不想,请不要使用这些。事实上,我很少使用它们或Prototype,因为jQuery是我选择的JS框架。因此,一种方式并不比另一种方式“更好”(除了在一般意义上,对于某些情况,heredoc优于字符串文字语法)。

答案 1 :(得分:2)

在Ruby %Q中提供了双引号分隔的字符串,所以:

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

<<-CODE是Ruby所谓的 Here Document ,或者只是 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

答案 2 :(得分:0)

  1. %Q相当于Ruby中的""字符串。但是如果使用这样的%Q语法,则不需要转义双引号。
  2. 这是HEREDOC的声明。你也不需要在那里逃避引用。
  3. Strings in Ruby

答案 3 :(得分:-3)

在这里您可以找到详细信息。 Ruby with javascript