2011-08-26 80 views
1

我的觀點:爲什麼Rails在我的頁面上顯示內存地址?

<h1><%= @territory.name %></h1> 
<%= link_to 'List of Territories', territories_path %> 
<%= render 'shared/address_form' %> 
<table> 
    <tr> 
    <td><strong>Name</strong></td> 
    <td><strong>Street</strong></td> 
    <td><strong>District</strong></td> 
    <td><strong>Note</strong></td> 
    <tr> 

    <%= @addresses.each do |address| %> 
    <tr> 
    <td><%= address.name %></td> 
    <td><%= address.street %></td> 
    <td><%= address.district %></td> 
    <td><%= address.note %></td> 
    </tr> 
    <% end %> 
</table> 

形式我呈現在這裏:

<%= form_for [@territory, @new_address] do |f| %> 
<div> 
    <p> 
    <%= f.label :address %><br /> 
    <%= f.text_area :address %> 
    </p> 
</div> 
<div class='file-wrapper'> 
    <%= f.submit "Submit" %> 
</div> 
<% end %> 

這裏是領土控制器,其中實例變量地址定義:

class TerritoriesController < ApplicationController 
    def index 
    @territories = Territory.all 
    end 

    def show 
    @territory = Territory.find(params[:id]) 
    @new_address = @territory.addresses.build 
    @addresses = @territory.addresses 
    end 
    . 
    . 
    . 

爲什麼Rails的顯示

#<Address:0x7e088224>#<Address:0x7e0881d4>#<Address:0x7e088134>#<Address:0x7e088094># <Address:0x7e087ff4>#<Address:0x7e087f54>#<Address:0x7e087eb4>#<Address:0x7e087e14>#<Address:0x7e087d74>#<Address:0x7e0bce48> 

之後的表格和之前的表格?

感謝 托馬斯

+2

什麼形式?你的代碼從桌面開始。請在此之前顯示代碼。 – Thilo

+0

對不起,我一定遲到了。我剛剛更新了帖子的內容。 – Thomas

回答

2

檢查您的佈局(應用程序/視圖/佈局/ *)。很可能你已經在顯示這些地址的頁面中包含了一些ERB代碼。這是你觀點的完整代碼嗎?

編輯:我找到了你的解決方案。現在,你有<%= @addresses.each ... %>。每個方法在所有元素上運行該塊,然後返回元素列表。您不希望顯示此代碼。刪除=,使<%=僅僅是<%

+0

我真的沒有看到這樣的地方。我只是更新了帖子,顯示了正確的視圖和表單。你可能想看看,因爲我真的不明白這種奇怪行爲的原因。 – Thomas

+0

名稱,街道,地區,請注意所有標準導軌字段或做任何他們有自定義方法?另外,你正在渲染的部分是否還有其他代碼? –

+0

是的,名稱,街道,地區,筆記都是標準欄杆。這是完整的部分。這裏沒有其他代碼。 – Thomas

2

你有地方一些視圖代碼(在佈局或視圖助手)一個被隱式調用你Address模型實例的to_s方法。尋找類似<%= @address %>的東西。

如您所見,to_s方法的非重載行爲是輸出對象實例的內存地址。

+0

我剛剛發佈了代碼,但我無法真正看到做錯了什麼。我也在控制檯中運行了整個事情,並且id不打印沒有內存地址的數據。 – Thomas

0

第一:我看不到任何形式。第二:你的觀點看起來不錯。

看看你的佈局文件。

+0

對不起,我發佈了錯誤的東西。你可能想現在看。 – Thomas

2

那些不是內存地址。這些是您的Address類的實例。如果您將覆蓋該類中的to_s方法,則會看到該輸出。你看到這些打印對象的原因是你使用<%=。更改此行

<%= @addresses.each do |address| %> 

這個

<% @addresses.each do |address| %> 

應該修復它。

+0

我好蠢!你是對的!謝謝Thilo。 – Thomas

+0

在那裏,做到這一點,不要擔心它:) – Thilo

相關問題