JS:
$(this).attr({
src: "<%= asset_path("\\$hoverClass"'-red.jpg') %>"
});
这会输出/assets/$hoverClass-red.jpg 而不是/assets/sports-red.jpg('sports' 是 $hoverClass 的值)。
最佳答案
Ruby 不会像这样插入字符串。你的意思是:
<%= asset_path("#{$hoverClass}-red.jpg") %>
请注意,在 Ruby 中使用 $
前缀的变量通常是错误的形式,因为这意味着您要在全局范围内声明它们。这不可避免地会导致名称冲突、无意中的数据持久化以及许多其他难以确定的问题。尽可能使用 @
前缀的实例变量。
你也可以这样实现:
$(this).attr(<%= { src: asset_path("#{$hoverClass}-red.jpg") }.to_json %>);
这通常更可靠,因为已经为您完成了正确的 JSON 转义。
关于javascript - 为什么我的 $variable 放在 ERB 中时表现得像一个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17222643/