2011-07-05 43 views
2

儘管可以通過將代碼放入控制器或其他東西來完成整理,但我無法想象爲什麼會發生以下情況: 假定@some_table.some_text包含5行。 把下面的代碼在我html.erb文件:當在html.erb中使用每個字符串時,Rails會打印字符串

<% @some_table.some_text.lines.each do |cur_line| %> 
    foo 
<% end %> 

導致5 foo秒,然後在@some_table.some_text的所有行。 我可以想象這會發生在使用<%= %>而不是<% %>時。 顯然,我不希望顯示@some_table.some_text

我在這裏做錯了什麼?

回答

1

這就是Ruby lines方法的工作方式 - 它返回一個Enumerable,它不能以相同的方式循環。出於您的目的,請嘗試

<% @some_table.some_text.split(/\n/).each do |cur_line| %> 

改爲。

或者轉換Enemerable到一個數組調用each前使用methods之一,例如:

<% @some_table.some_text.lines.collect.each do |cur_line| %> 
+0

謝謝,這工作。它仍然讓我感到困惑,但我認爲'<% %>'不應該將任何返回的數據呈現爲html輸出。 – SirLenz0rlot