1

JS:

$(this).attr({
    src: "<%= asset_path("\\$hoverClass"'-red.jpg') %>"
});

这将输出 /assets/$hoverClass-red.jpg 而不是 /assets/sports-red.jpg('sports' 是 $hoverClass 的值)。

4

1 回答 1

3

Ruby 不会像这样插入字符串。你的意思是这样的:

<%= asset_path("#{$hoverClass}-red.jpg") %>

需要注意的是,$在 Ruby 中使用 -prefixed 变量通常是不好的形式,因为这意味着您要在全局范围内声明它们。这不可避免地会导致名称冲突、无意的数据持久性以及许多其他难以确定的问题。尽可能使用@-prefixed 实例变量。

你也可以像这样实现:

$(this).attr(<%= { src: asset_path("#{$hoverClass}-red.jpg") }.to_json %>);

这通常更可靠,因为为您完成了正确的 JSON 转义。

于 2013-06-20T19:59:18.817 回答