我有Class City
has_many :clients
和Class Client
has_one :city
和belongs_to :city
。
现在这是我的客户迁移:
class CreateClients < ActiveRecord::Migration
def change
create_table :clients do |t|
t.string :business
t.string :owner_or_manager
t.string :number
t.string :email
t.belongs_to :city
t.timestamps null: false
end
end
end
我的城市迁移:
class CreateCities < ActiveRecord::Migration
def change
create_table :cities do |t|
t.string :name
t.timestamps null: false
end
end
end
这是我的城市show.html.erb
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="col-sm-2 center-block mgntop">
<h3><%=@city.name%></h3>
<h3><%=@city.clients%></h3>
<%= link_to "Edit", edit_city_path(@city), class: "btn" %>
<%= link_to "Delete", city_path(@city), method: :delete, data: {confirm: "Estas seguro que quieres borrar este cliente?"}, class: "btn btn-danger" %>
</div>
</div>
</div>
</div>
正如您在我的show.html.erb中看到的,我有<h3><%=@city.clients%></h3>
,但我的输出是<Client::ActiveRecord_Associations_CollectionProxy:0x007f9383434bf8>
。
但我想向所有拥有该特定城市的客户展示。我已完成@city.clients.name%
但我的输出只是&#34;客户&#34;。我知道我很接近得到我想要的东西,但我需要一些帮助。那么,我怎样才能展示拥有该特定城市的所有客户?
答案 0 :(得分:0)
由于城市有很多客户。 你可以做一个.each循环并显示所有记录。
<% @city.clients.each do |client|%>
<%= client.business %>
<% end %>
答案 1 :(得分:0)
我已经完成了@ city.clients.name,但我的输出只是单词“Client”
@city.clients
是ActiveRecord_Associations_CollectionProxy
,不是您预期的客户,因为您的模型中clients
是has_many
关系。顺便说一下,@city.clients.name
会实际返回class_name
。
只需像这样重构show.html.erb
:
<div class="container">
<div class="row">
<div class="col-sm-12">
<div class="col-sm-2 center-block mgntop">
<h3><%=@city.name %></h3>
<!-- Remove <h3><%=@city.clients%></h3> -->
<!-- Start replacing -->
<% @city.clients.each do |client| %>
<p><%= client.bussiness %><p>
<p><%= client.number %><p>
<p><%= client.email %><p>
<% end %>
<!-- End replacing -->
<%= link_to "Edit", edit_city_path(@city), class: "btn" %>
<%= link_to "Delete", city_path(@city), method: :delete, data: {confirm: "Estas seguro que quieres borrar este cliente?"}, class: "btn btn-danger" %>
</div>
</div>
</div>
</div>
答案 2 :(得分:0)
希望显示具有该特定城市的所有客户
<% @city.clients.each do |client| %>
<%= client.id %>
<% end %>
您遇到的问题是输出 city.clients
意味着您要显示clients
city
的“集合”(IE { {1}})。
您需要遍历集合,并单独输出每个对象。
Client.where(city_id: @city.id)
和has_one :city
。
您不能拥有两个具有相同名称的关联。
如果您希望belongs_to :city
拥有某个城市,则必须将其命名为其他名称,否则请将其从client
中删除:
model