为什么我的$变量在放入ERB时就像一个字符串?

时间:2013-06-20 19:56:29

标签: javascript jquery ruby-on-rails asset-pipeline

JS:

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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

你也可以这样做:

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

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