我有一个遍历一些公司的视图。对于每家公司,我都希望通过一些特定于每家公司的时间轴来循环。我如何将参数传递到时间轴控制器上的公司?还是说这不是正确的做法?
# controllers/companies_controller.rb
class CompaniesController < ApplicationController
def index
@companies = Company.sorted
@timelines = Timeline.sorted
...
# models/company.rb
class Company < ActiveRecord::Base
has_many :timelines, dependent: :destroy
scope :sorted, lambda { order("companies.name ASC") }
...
# models/timeline.rb
class Timeline < ActiveRecord::Base
belongs_to :company
scope :sorted, lambda { order("timelines.created_at DESC")}
...
# views/companies/index.html.erb
<% @companies.each_with_index do |company, index| %>
...
<% @timelines.each do |timeline| %>
最后一行是我遇到麻烦的地方。我可以让所有的时间轴帖子都以这种方式显示,但我想让它们在每个迭代中特定于公司。我在第一个循环中有company.id
,但我不确定如何使用它,因为它在视图中。
注意:我有一个外键在timelines
引用company_id
。版本:ruby 2.2.3
和rails 4.2.4
你可以这样做
<% @companies.each_with_index do |company, index| %>
...
<% company.timelines.each do |timeline| %>
更新:
除了pavan对排序特性的评论之外,您应该像这样将sorted
范围添加到timelines
<% @companies.each_with_index do |company, index| %>
...
<% company.timelines.sorted.each do |timeline| %>
可以像下面这样使用
<% @companies.each_with_index do |company, index| %>
...
<% @timelines.where(comapany_id: company.id).each do |timeline| %>
假设第二个循环在第一个循环内