为什么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>
之后的表格和之前的表格?
感谢 托马斯
答
检查您的布局(应用程序/视图/布局/ *)。很可能你已经在显示这些地址的页面中包含了一些ERB代码。这是你观点的完整代码吗?
编辑:我找到了你的解决方案。现在,你有<%= @addresses.each ... %>
。每个方法在所有元素上运行该块,然后返回元素列表。您不希望显示此代码。删除=
,使<%=
仅仅是<%
答
你有地方一些视图代码(在布局或视图助手)一个被隐式调用你Address
模型实例的to_s
方法。寻找类似<%= @address %>
的东西。
如您所见,to_s
方法的非重载行为是输出对象实例的内存地址。
+0
我刚刚发布了代码,但我无法真正看到做错了什么。我也在控制台中运行了整个事情,并且id不打印没有内存地址的数据。 – Thomas
什么形式?你的代码从桌面开始。请在此之前显示代码。 – Thilo
对不起,我一定迟到了。我刚刚更新了帖子的内容。 – Thomas