Ruby on rails 以<;开头的ruby块<-HTML
我正在学习如何将Desive flash和错误消息与Bootstrap集成(或者在我的例子中是Materialize)。我在Devise的wiki()中找到了一篇关于这个主题的文章,因此我理解它是如何工作的,但是有一部分代码我在理解上有问题Ruby on rails 以<;开头的ruby块<-HTML,ruby-on-rails,ruby,devise,Ruby On Rails,Ruby,Devise,我正在学习如何将Desive flash和错误消息与Bootstrap集成(或者在我的例子中是Materialize)。我在Devise的wiki()中找到了一篇关于这个主题的文章,因此我理解它是如何工作的,但是有一部分代码我在理解上有问题 html = <<-HTML <div class="card-panel red lighten-2"> #{messages} </div> HTML html.html_safe html=这是一种声明字符
html = <<-HTML
<div class="card-panel red lighten-2">
#{messages}
</div>
HTML
html.html_safe
html=这是一种声明字符串的常用方法,在某些情况下非常有用(编辑:感谢@Stefan):
想象一下,在没有任何换行的情况下阅读一个非常复杂的SQL查询是多么痛苦!(与手动联接、递归、并集或表视图类似)
它适用于任何类型的单词:
a_string = <<-WHATEVER
This is a string
with some line-break
to make it more readable
#{and_you_can_use_string_interpolation_too}
WHATEVER
a_string=它被称为here doc
:这很好@PrakashMurthy。谢谢。顺便说一句,你可以在herdeoc上调用一个方法:不仅仅是一种Ruby方式,存在于各种语言中。谢谢你的澄清@StefanI知道Ruby在换行时非常聪明,但是你说既然它是一个字符串,它就需要解释因此,在您的示例中,服务器不会将sql=“SELECT*FROM\n WHERE\n…
”接受到`ActiveRecord::Base.connection.execute(sql)`中?是的,因为断线符“\n”
不会在sql查询中使用。(在您的IRB控制台中复制粘贴该示例,它会起作用)我理解你的意思,我只是想知道它是否只是为了人类可读性,或者如果将换行符放入单行sql变量中,该参数是否有效。我明白你的意思。我可以自己尝试。谢谢。
sql = <<-SQL
SELECT * FROM users
WHERE users.id > 15
ORDER BY users.username;
SQL
ActiveRecord::Base.connection.execute(sql)
sql = "SELECT * FROM users WHERE users.id > 15 ORDER BY users.username;"
ActiveRecord::Base.connection.execute(sql)
a_string = <<-WHATEVER
This is a string
with some line-break
to make it more readable
#{and_you_can_use_string_interpolation_too}
WHATEVER