Restaurant Load (1.5ms) SELECT * FROM "restaurants" INNER JOIN
"restaurant_branches" ON "restaurant_branches"."restaurant_id" =
"restaurants"."restaurant_id"
+----------+---------+---------+---------+----------+---------+----------+---------+---------+---------+---------+---------+---------+---------+---------+-------+
| resta... | res_... | res_... | crea... | updat... | user_id | resta... | addr...
| addr... | addr... | addr... | addr... | addr... | numb... | numb... | email |
+----------+---------+---------+---------+----------+---------+----------+---------+---------+---------+---------+---------+---------+---------+---------+-------+
| 27 | DOGG... | WE S... | 2014... | 2014-... | 4 | 28 | 405 ...
| | CHICAGO | IL | 60666 | USA | | | |
| 27 | DOGG... | WE S... | 2014... | 2014-... | 4 | 29 | 111 ...
| | CHICAGO | IL | 60661 | USA | | | |
+----------+---------+---------+---------+----------+---------+----------+---------+---------+---------+---------+---------+---------+---------+---------+-------+
正如你所看到的,我有两个记录27的记录。这是来自加入
restaurants
和restaurant_branches
之间的表格。我该怎么做
这在视图中,以便当我在index.html.erb
文件上选择记录时
当它被路由到show.html.erb
文件时,它只会占用一行
该记录只显示一个分支而不是2?
感谢您的帮助。
答案 0 :(得分:2)
两条记录不同,因此请将它们分开并列出两者。很难说哪个领域与问题不同。根据查询,我假设它们是restaurant_branches
不同的字段。
如果是您想要展示/编辑的餐馆,那么只需使用Restaurant.all
但您想要限制。但是,如果您要编辑restaurant_branches
,请引入RestaurantBranchesController
,并将分支链接分开。
类似(erb
)中的内容:
<%= restaurant.id %>
<% restaurant.restaurant_branches.each do |rb| %>
<%= link_to 'Some branch', rb %><br />
<% end -%>
然后,link_to(rb)
会将您与特定RestaurantBranchesController#show
的{{1}}操作相关联。
答案 1 :(得分:0)
<强>集合强>
除了@vee
建议的内容之外,在我看来,您正在从ActiveRecord调用collection
数据。 集合基本上意味着您将收回大量对象,而不仅仅是一条记录
我想你的模型设置如下:
#app/models/restaurant.rb
Class Restaurant < ActiveRecord::Base
has_many :branches, class_name: "RestaurantBranch"
end
#app/models/restaurant_branch.rb
Class RestaurantBranch < ActiveRecord::Base
belongs_to :restaurant
end
这将使您能够调用以下内容:
@restaurant = Restaurant.find params[:id]
@restaurant.branches #-> returns the collection
-
<强>限制强>
解决此问题的方法取决于您尝试展示的内容。
通常,您可以使用limit
之类的内容来检索单个记录,如下所示:
@restaurant.branches.limit(1)
与生活中的大多数事情一样,如果您定义要限制结果的内容,这将更容易解决 - 目的是什么?