2013-08-27 54 views
2

我喜歡視圖源代碼是好的清潔的,但我使用<%= =任何時間>標記的空白被忽略該標記之前。滑軌忽略空格之前<%=插入

.html.erb:.html.erb file

查看源代碼:Source

通知產量,crfs_meta和樣式表的鏈接標籤忽略這個標籤前的空白。我使用標準的2個空格作爲我的「標籤」。對於Yield,當我渲染partials時,我可以補償已刪除的空白並將其放入partial中,但對於腳本和樣式表標記,我無法做到這一點。有沒有辦法讓我的空白?

我剛剛意識到,佈局和產量的渲染標籤保留上一行的空白(4個選項卡,呈現在6個選項卡上),但在該佈局中,我必須將第一行放在0選項卡上,然後在4個選項卡下一行,把它內嵌在6個標籤...

+0

Rails 4,Ruby 2.9.3,Aptana Studio 3是我的IDE –

+1

你的圖像很整潔,但它會更簡單如果代碼是以「stackoverflow style」作爲實際文本塊呈現的話。它使得將特定代碼複製到答案變得更容易。它還鼓勵你以蒸餾你的問題代碼的具體問題;) – Shadwell

+0

我可以理解,但沙德韋爾堆棧溢出還剝離了空白,我是不會去的,並再次重新格式化空白。 –

回答

2

的問題是不是<%=爲您的編輯建議。這是因爲在你<%= ... %>塊調用方法生成輸出的多行和那些後續行不尊重你的縮進。

有沒有,據我可以告訴來解決它真的非常簡潔的方式。您可以用正確的縮進替換這些方法的輸出中的任何換行符,但是隨後您的代碼中的可讀性交易以便在輸出中進行可讀性。

例如,像:

<%= csrf_meta_tags.gsub("\n", "\n ").html_safe %> 

或者你可以寫一個輔助方法(在application_helper.rb)做到這一點:

def indent_output(output, indentation = " ") 
    output.gsub("\n", "\n" + indentation).html_safe 
end 

然後你的相關視圖代碼是:

<%= indent_output(csrf_meta_tags, " ") %> 
<%= indent_output(stylesheet_link_tag("bootstrap.min", "main"), " ") %> 
+0

我該如何做到這一點,這個幫手需要一個值的空格縮進數量?我的鐵軌真的很生鏽。 –

+0

哦,等你,你做了,你只是在助手中設置一個默認值,我現在看到! –

+0

好吧,我試了這個和1。助手需要被稱爲縮進或代碼出來這樣<元內容你提供,稱爲indent_output標籤,然後= " authenticity_token "名= " CSRF-PARAM "/> <元含量= " ATmNHGpQy3193K3KsxndHAc + gzGNoEGw5XmfXi8xKW4 = "名= " csrf-token "/> –