2011-08-26 65 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

相关问题