javascript - 为什么我的 $variable 放在 ERB 中时表现得像一个字符串?

标签 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 的值)。

最佳答案

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/

相关文章:

javascript - 如何在 img 标签 src 中使用 blob URL?

javascript - 无法访问从 ajax 调用返回的对象的属性

javascript - React Navigation 的 StackNavigator 标题内的自定义关闭按钮

jquery - 修改显示/隐藏功能只缩放宽度,不缩放高度?

jquery - 使用带有 'scale' 效果的 Jquery Show() 仅对宽度进行动画处理不起作用

javascript - 如何合并三个html元素

javascript 警报阻止页面加载

ruby-on-rails - Rails 5 DEPRECATION警告: Accessing mime types via constants is deprecated

ruby-on-rails - Rails Custom Rake Task 没有方法错误

ruby-on-rails - 测试当前目录是否在 Rails 项目中 (bash)