Ruby #{}式替换在ERB表达式中有效吗?

Ruby #{}式替换在ERB表达式中有效吗?,ruby,erb,Ruby,Erb,在我的rails教程中,我正在向删除操作添加一个确认对话框,并且我希望包含要删除的对象中的一些文本。所以我试了一下: <%= link_to 'Delete', article_path(article), method: :delete, data: { confirm: 'Really delete blog "#{article.title}"?' } %> 替换发生了:结果对话框显示真的删除博客“卷心菜和国王”? 为了使“#{article.title}”更具可读性,我需要

在我的rails教程中,我正在向删除操作添加一个确认对话框,并且我希望包含要删除的对象中的一些文本。所以我试了一下:

<%= link_to 'Delete', article_path(article), method: :delete, data: { confirm: 'Really delete blog "#{article.title}"?' } %>
替换发生了:结果对话框显示
真的删除博客“卷心菜和国王”?


为了使“#{article.title}”更具可读性,我需要做哪些更改?有什么区别吗?

试着这样做,看看

"Really delete blog '#{article.title}'?"

试着这样做,看看

"Really delete blog '#{article.title}'?"
{}
不起作用的原因是双引号
和单引号

编辑:有关字符串插值和使用
#{}
样式的更完整描述,请阅读。要了解为什么双引号和单引号通常不会带来有意义的性能问题,请参阅。-此编辑归功于@PaulHicks

单引号中的文本不进行预处理(在创建字符串对象之前进行分析),而双引号中的文本进行预处理。因此:

'hello\n "world"!' == "hello\\n \"world\"!" #=> true
以下更改可以正常工作(请注意双引号而不是单引号):

(您可以在上面的链接中看到更多关于插值的选项)

祝你好运!

双引号
和单引号

编辑:有关字符串插值和使用
{}
样式的更完整说明,请阅读。要了解为什么双引号和单引号通常不会造成有意义的性能问题,请执行以下操作:这次编辑归功于@PaulHicks

单引号中的文本不进行预处理(在创建字符串对象之前进行分析),而双引号中的文本进行预处理。以便:

'hello\n "world"!' == "hello\\n \"world\"!" #=> true
以下更改可以正常工作(请注意双引号而不是单引号):

(您可以在上面的链接中看到更多关于插值的选项)


祝你好运

啊哈。我显然离开Ruby太久了,我忘了。我一直在寻找一个与此相似的经典问题;到目前为止,我已经找到了半打0票和1票的等价物,但没有什么突出的。。似乎应该有一个规范性的问题。你也可以使用
%Q(…)
文字来避免转义:
确认:%Q(真的删除博客“#{article.title}”)
谢谢你的澄清,@PaulHicks。我没有意识到这种区别。感谢@提供了一个更干净的选择。我将用提示编辑答案。啊哈。我显然离开Ruby太久了,我忘了。我一直在寻找一个与此相似的经典问题;到目前为止,我已经找到了半打0票和1票的等价物,但没有什么突出的。。似乎应该有一个规范性的问题。你也可以使用
%Q(…)
文字来避免转义:
确认:%Q(真的删除博客“#{article.title}”)
谢谢你的澄清,@PaulHicks。我没有意识到这种区别。感谢@提供了一个更干净的选择。我将用提示编辑答案。另一个问题(投票以重复方式结束)更容易在谷歌上找到,并且有一个非常有用的答案。也许是重复的,但我相信这个讨论可能对未来的ruby开发者有所帮助。这个问题涉及到双引号与带有
#{}
插值的单引号的具体问题(另一个问题只提到传递过程中的差异)。也许应该对问题/答案进行编辑,使其更加关注这个特定问题(主题可以是:“为什么
#{}
不起作用”或类似内容)。结束并不意味着删除。这只是意味着这里不需要更多的答案。我认为你的回答涵盖了这个问题所需的一切。另一个问题(投票以重复方式结束)在谷歌上更容易找到,并且有一个非常有用的答案。也许是重复的,但我相信这个讨论可能对未来的ruby研究者有所帮助。这个问题涉及到双引号与带有
#{}
插值的单引号的具体问题(另一个问题只提到传递过程中的差异)。也许应该对问题/答案进行编辑,使其更加关注这个特定问题(主题可以是:“为什么
#{}
不起作用”或类似内容)。结束并不意味着删除。这只是意味着这里不需要更多的答案。我认为你的回答涵盖了这个问题所需要的一切。
confirm: %Q(Really delete blog "#{article.title}"?)