我的观点:
<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>
表格之后和表格之前?
由于 托马斯
答案 0 :(得分:2)
检查您的布局(app / views / layouts / *)。很可能您在使用显示这些地址的页面呈现的ERB代码中包含了一些ERB代码。这是您的观点的完整代码吗?
编辑:我找到了你的解决方案。现在,你有<%= @addresses.each ... %>
。每个方法在所有元素上运行块,然后返回元素列表。您不希望显示此代码。移除=
,以便<%=
只是<%
答案 1 :(得分:2)
您在某处(在布局或视图助手中)有一些隐式调用to_s
模型实例的Address
方法的视图代码。寻找类似<%= @address %>
的内容。
如您所见,to_s
方法的非重写行为是输出对象实例的内存地址。
答案 2 :(得分:2)
那些不是内存地址。这些是您的Address类的实例。如果您覆盖该类中的to_s
方法,则会在那里看到输出。您看到这些对象打印出来的原因是您使用<%=
。改变这一行
<%= @addresses.each do |address| %>
到这个
<% @addresses.each do |address| %>
应该修复它。
答案 3 :(得分:0)
首先:我认为你看不到任何形式。 第二:你的观点看起来不错。
查看布局文件。