我有一个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%,但我的输出只是“客户端”这个词。我知道我马上就要得到我想要的了,但我需要一些帮助。那么,我如何显示具有该特定City的所有客户端呢?
发布于 2016-02-04 11:37:29
因为city有很多客户。您可以执行一个.each循环并显示所有记录。
<% @city.clients.each do |client|%>
<%= client.business %>
<% end %>发布于 2016-02-04 15:03:37
我做过@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>发布于 2016-02-04 21:21:39
想要显示具有该特定城市的所有客户端
<% @city.clients.each do |client| %>
<%= client.id %>
<% end %>你在输出city.clients时遇到的问题意味着你要显示clients of a city (IE Client.where(city_id: @city.id))的“集合”。
您需要遍历集合,并分别输出每个对象。
其中
has_one :city和belongs_to :city。
不能有两个具有相同名称的关联。
如果你想让你的client拥有一个城市,你必须给它起一个不同的名字,否则就把它从你的model中完全删除:
#app/models/client.rb
class Client < ActiveRecord::Base
belongs_to :city #-> ok
has_one :owned_city, class_name: "City" #-> only if you have "belongs_to :client" in City model
endhttps://stackoverflow.com/questions/35191931
复制相似问题