2009-06-15 50 views
49

我已經開始了一些軌道的教程,發現一些視圖代碼塊都像差異 - %>和%在軌

<h1><%= @subject.name -%></h1> 

和其他代碼塊>像

<h1><%= @subject.name %></h1> 

有什麼區別 - %>和%>

如果你知道一些很好的語法參考,你可以指向我,這也會有所幫助。

+0

在引用者之前詢問過此人。儘管我相信我們的版主知道他們在做什麼。 – Brettski 2014-09-03 16:51:49

回答

80

額外的短劃線使ERB在結束標記後不輸出換行符。有沒有在你的例子沒有任何區別,但如果你有這樣的事情:

<div> 
    <% if true -%> 
    Hi 
    <% end -%> 
</div> 

它會產生:

<div> 
    Hi 
</div> 

,而不是這樣的:

<div> 

    Hi 

</div> 
+7

非常感謝!我首先找到了一個允許特殊字符的搜索引擎,然後搜索 - %>。這是顯示的第一頁。我使用了http://www.symbolhound.com/(我現在可能會經常使用它,因爲在Google上搜索特殊符號是不可能的)。 – 2012-05-04 18:10:08

+4

確保在獨立ruby腳本中使用ERB將`trim_mode`傳遞給`ERB.new`時,例如`ERB.new('myfile.erb',nil,' - ')```-``是'trim_mode`,否則它不會接受破折號 – 2012-09-18 10:18:48

+0

當我嘗試管道到` erb命令行工具。作爲@Koen。聲明的設置微調模式修復了問題,並且該命令可以設置它,即(`erb -T' - '`)。 – erran 2014-10-30 04:22:39

4

如果使用HAML而比再培訓局你可以做一些類似的小於或更多的符號比你的標籤後。

>將刪除標籤周圍的任何空格,並且<將刪除其中的任何空格。

.float-left< 
    %p 
    Lorem ipsum dolor sit amet 

被編譯爲:

<div class="float-left"><p> 
    Lorem ipsum dolor sit amet 
</p></div> 

而且......

%left_tag 
%inside> 
%right_tag 

被編譯爲:

<left_tag /><inside /><right_tag /> 

如果你不使用HAML這是絕對值得一試。

5

我很確定-之前%>不再需要,應該省略。

至少在Chrome中,使用-%>%>生成的html看起來相同。

3

更新:此答案錯誤,請參閱https://stackoverflow.com/a/25626629/895245


在Ruby 2中。1(不一定使用Rails),則-移除一個換行符:

  • 換行符必須是>
  • 沒有空格被刪除之後的第一個字符
  • 僅單個換行被除去
  • 你必須通過'-'選擇使用它

例子:

require 'erb' 
ERB.new("<%= 'a' %>\nb").result    == "a\nb" or raise 
begin ERB.new("<%= 'a' -%>\nb").result; rescue SyntaxError ; else raise; end 
ERB.new("<%= 'a' %>\nb" , nil, '-').result == "a\nb" or raise 
ERB.new("<%= 'a' -%>\nb" , nil, '-').result == 'ab' or raise 
ERB.new("<%= 'a' -%> \nb" , nil, '-').result == "a \nb" or raise 
ERB.new("<%= 'a' -%>\n b" , nil, '-').result == 'a b' or raise 
ERB.new("<%= 'a' -%>\n\nb", nil, '-').result == "a\nb" or raise 

文件:http://ruby-doc.org/stdlib-2.1.1/libdoc/erb/rdoc/ERB.html

的Rails 4.1的文檔這在http://api.rubyonrails.org/classes/ActionView/Base.html,看來:

但是,Rails 4.1會刪除已記錄的尾部空白,而純ERB不會,因此可能會有其他差異。

此外,它並沒有刪除前文所述的換行符:它可能是一個文檔錯誤。在以下位置打開問題:https://github.com/rails/rails/issues/16766