铁轨上的红宝石 - 如何只采取一排

时间:2014-07-20 03:01:32

标签: ruby-on-rails

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的记录。这是来自加入 restaurantsrestaurant_branches之间的表格。我该怎么做 这在视图中,以便当我在index.html.erb文件上选择记录时 当它被路由到show.html.erb文件时,它只会占用一行 该记录只显示一个分支而不是2?

感谢您的帮助。

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)

与生活中的大多数事情一样,如果您定义要限制结果的内容,这将更容易解决 - 目的是什么?