2015-04-08 41 views
5

Bootstrap ile Devise flaş ve hata mesajlarını entegre etmeyi (veya benim durumumda Materialize) öğreniyorum. Devise'nin wiki'sinde (https://github.com/plataformatec/devise/wiki/How-To:-Integrate-I18n-Flash-Messages-with-Devise-and-Bootstrap) konuyla ilgili bir makale buldum, bu yüzden nasıl çalıştığını anlıyorum, fakat kodun bir bölümü anladığım problemleri anladım.ruby ​​bloğu ile başlar << - HTML

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

html.html_safe 

Birisi <<-HTML sözdizimini açıklayabilir mi? BTW, burada durumda size gereken bir dize ilan etme yakut yaygın yoludur

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 
+2

O denir 'Burada doc': http: //log.gmarik.info/2007/12/rubys-here-document-heredoc-mini.html –

+0

Bu harika @PrakashMurthy.Teşekkür ederiz – mike0416

+0

BTW, heredoc'ta bir yöntemi arayabilirsiniz: << << - HTML.html_safe – Stefan

cevap

6

bağlam içinde tam işlevi olduğuna göre, bazı durumlarda oldukça yararlıdır (düzenleme: @Stefan için http://en.wikipedia.org/wiki/Here_document sayesinde):

daha iyi
sql = <<-SQL 
    SELECT * FROM users 
    WHERE users.id > 15 
    ORDER BY users.username; 
SQL 
ActiveRecord::Base.connection.execute(sql) 

Yolu basit daha bu okumayı:

sql = "SELECT * FROM users WHERE users.id > 15 ORDER BY users.username;" 
ActiveRecord::Base.connection.execute(sql) 

acıyı düşünün herhangi bir satır-ara vermeden çok karmaşık bir SQL sorgusu okumak için! ! Manuel, özyinelemeli, sendika veya tablo (lar)


Kelimenin her türlü ile çalışır görüşlerini katılmak olduğu gibi (:

a_string = <<-WHATEVER 
    This is a string 
    with some line-break 
    to make it more readable 
    #{and_you_can_use_string_interpolation_too} 
WHATEVER 
+2

Sadece bir Ruby yolu değil, [heredocs] (http://en.wikipedia.org/wiki/Here_document) çeşitli dillerde mevcuttur – Stefan

+0

Açıklama için teşekkürler @Stefan – MrYoshiji

+0

Biliyorum ruby ​​olduğunu satır sonları söz konusu olduğunda oldukça zeki, ama diyorsun ki bir String olduğu için bunu açıkça alacak. Yani, örneğinizde, sunucu 'sql = 'SELECT * FROM \ n NEREDE \ n ...'?' I 'ActiveRecord :: Base.connection.execute (sql) 'ye kabul etmiyor? – mike0416

İlgili konular