2016-04-30 39 views
-1

我試圖顯示我創建的所有項目的列表。 (稱爲「加盟」)在show.html.erb,我寫顯示調出數據列表

<%= @join = Join.all %> 
    <%= @join.each do |join| %> 
    <%= join.email %> 
<% end %> 

,它的工作,但是當我去的網頁,我得到一組數據,說:#<Join::ActiveRecord_Relation:0x007fbca99f12b8> [email protected] [#<Join id: 1, email: "[email protected]", created_at: "2016-04-30 12:48:16", updated_at: "2016-04-30 12:48:16">]有誰知道怎麼弄擺脫那個?

+0

除了聲明額外的@ @ join變量並定義整個塊之外,您可以執行'<%= Join.all.map(&:email).join('
')%>'。 – vee

回答

2

變化<%= @join.each do |join| %>變爲<% @join.each do |join| %><%=...%>之間的Ruby代碼被erb處理器解析並輸出html。在each-do塊的內部生成html輸出沒問題,因爲這是我們在這裏想要的,但每個表達式都是純粹的ruby,應該在html.erb文件中的<% ...%>表達式中進行評估。

在相同的上下文變化<%= @join = Join.all %><% @join = Join.all %>。事實上,我們應該始終在控制器的方法內生成實例變量,例如@join,而不是混亂視圖。

+1

另外'加入'是一個模型非常可怕的名字。 'Join.joins(:something)'會像'SELECT JOIN * FROM JOIN JOIN something.id ON joins.something_id'一樣生成SQL。這讀起來像一個[博士Seuss](https://en.wikipedia.org/wiki/Dr._Seuss)兒童書。 – max