簡體   English   中英

以<< - HTML開頭的ruby塊

[英]ruby block that starts with <<-HTML

我正在學習如何將Devise flash和錯誤消息與Bootstrap(或者在我的案例中為Materialise)集成。 我在Devise的wiki中找到了一篇關於這個主題的文章( https://github.com/plataformatec/devise/wiki/How-To:-Integrate-I18n-Flash-Messages-with-Devise-and-Bootstrap ),所以我理解如何工作,但有一部分代碼我有理解的問題。

html = <<-HTML
<div class="card-panel red lighten-2"> 
  #{messages}
</div>
HTML

html.html_safe

有人可以解釋<<-HTML語法嗎? 順便說一句,這是完整的功能,以防您需要上下文

def devise_error_messages!
return '' if resource.errors.empty?

messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join
html = <<-HTML
<div class="card-panel red lighten-2"> 
  #{messages}
</div>
HTML

html.html_safe
end

這是一個 紅寶石 聲明字符串的常用方法,在某些情況下非常有用(編輯: http//en.wikipedia.org/wiki/Here_document,感謝@Stefan):

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)

想象一下,在沒有任何換行符的情況下閱讀非常復雜的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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM