为什么这个不起作用?
:javascript
-[1,2,3].each do |number|
$("#form_#{number}").my_method();
Rails 给出错误提示,说变量
number
没有定义。为什么这个不起作用?
:javascript
-[1,2,3].each do |number|
$("#form_#{number}").my_method();
number
没有定义。:javascript
#{[1,2,3].map do |number|
"$(\"#form_#{number}\").my_method();"
end.join("\n")}
def create_js(arr)
arr.map do |number|
"$(\"#form_#{number}\").my_method();"
end.join("\n")
end
而 Haml 将会是这样
:javascript
#{create_js([1,2,3])}
你的 JavaScript 中有 Ruby 语法,这显然是行不通的。你可以使用像 underscore.js 这样的库,并像这样迭代你的数组:
_.each([1, 2, 3], function(number){
$("#form_" + number).my_method();
});
试试看。
或者你可以使用jQuery的each方法:
$.each([1, 2, 3], function(i, number){
$("#form_" + number).my_method();
});
$()
表示jQuery,则$.each([1,2,3],function(i, number) {...
- nnnnnn
.join("\n")
技巧(上面的函数只返回arr
的内容)。 - bevanbeach
更改为map
并添加了join
;你也更改了吗?否则,你看到了什么?(我正在使用1.9.3版本,它对我有效)。 - matteach
到map
的更改,谢谢你指出来。 - bevanb